Types
Members list
Type members
Classlikes
Any type except null.
Any type.
Any type.
This is the supertype of all value types that can be passed to JavaScript code. Record types are the canonical counter-example: they are not subtypes of any because their values cannot be given to JavaScript.
This type supports a very limited set of Scala operations, the ones common to all values. Basically only reference equality tests and instance tests. It also supports all JavaScript operations, since all Scala objects are also genuine JavaScript values.
The type java.lang.Object in the back-end maps to AnyType because it can hold JS values (not only instances of Scala.js classes).
Attributes
- Supertypes
- Self type
-
AnyType.type
Array type.
Array type.
Although the array type itself may be non-nullable, the elements of an array are always nullable for non-primitive types. This is unavoidable, since arrays can be created with their elements initialized with the zero of the element type.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalsclass Typeclass Objecttrait Matchableclass AnyShow all
Array type.
Array type.
Attributes
- Companion
- object
- Supertypes
-
trait Serializabletrait Producttrait Equalsclass TypeReftrait Comparable[TypeRef]class Objecttrait Matchableclass AnyShow all
Attributes
- Companion
- class
- Supertypes
- Self type
-
ArrayTypeRef.type
Boolean type. It does not accept null nor undefined.
Boolean type. It does not accept null nor undefined.
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalsclass PrimTypeWithRefclass PrimTypeclass Typeclass Objecttrait Matchableclass AnyShow all
- Self type
-
BooleanType.type
8-bit signed integer type. It does not accept null nor undefined.
Char type, a 16-bit UTF-16 code unit. It does not accept null nor undefined.
Char type, a 16-bit UTF-16 code unit. It does not accept null nor undefined.
Attributes
Class (or interface) type.
Class (or interface) type.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalsclass NonArrayTypeRefclass TypeReftrait Comparable[TypeRef]class Objecttrait Matchableclass AnyShow all
Class (or interface) type.
Class (or interface) type.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalsclass Typeclass Objecttrait Matchableclass AnyShow all
Closure type.
Closure type.
This is the type of a typed closure. Parameters and result are statically typed according to the closureTypeRef components.
Closure types may be nullable. Null() is a valid value of a nullable closure type. This is unfortunately required to have default values of closure types, which in turn is required to be used as the type of a field.
Closure types are non-variant in both parameter and result types.
Closure types are not subtypes of AnyType. That statically prevents them from going into JavaScript code or in any other universal context. They do not support type tests nor casts.
The following subtyping relationships hold for any closure type CT:
nothing <: CT <: void
For a nullable closure type CT, additionally the following subtyping relationship holds:
null <: CT
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalsclass Typeclass Objecttrait Matchableclass AnyShow all
Double type (64-bit). It does not accept null nor undefined.
Double type (64-bit). It does not accept null nor undefined.
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalsclass PrimTypeWithRefclass PrimTypeclass Typeclass Objecttrait Matchableclass AnyShow all
- Self type
-
DoubleType.type
Float type (32-bit). It does not accept null nor undefined.
32-bit signed integer type. It does not accept null nor undefined.
64-bit signed integer type. It does not accept null nor undefined.
Nothing type (the bottom type of this type system). Expressions from which one can never come back are typed as Nothing. For example, throw and return.
Nothing type (the bottom type of this type system). Expressions from which one can never come back are typed as Nothing. For example, throw and return.
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Serializabletrait Producttrait Equalsclass PrimTypeWithRefclass PrimTypeclass Typeclass Objecttrait Matchableclass AnyShow all
- Self type
-
NothingType.type
The type of null. It does not accept undefined. The null type is a subtype of all class types and array types.
The type of null. It does not accept undefined. The null type is a subtype of all class types and array types.
Attributes
Primitive type reference.
Primitive type reference.
Attributes
- Companion
- object
- Supertypes
-
class NonArrayTypeRefclass TypeReftrait Comparable[TypeRef]class Objecttrait Matchableclass AnyShow all
Attributes
- Supertypes
- Known subtypes
-
class PrimTypeWithRefobject BooleanTypeobject ByteTypeobject CharTypeobject DoubleTypeobject FloatTypeobject IntTypeobject LongTypeobject NothingTypeobject NullTypeobject ShortTypeobject VoidTypeobject StringTypeobject UndefTypeShow all
Attributes
- Supertypes
- Known subtypes
-
object BooleanTypeobject ByteTypeobject CharTypeobject DoubleTypeobject FloatTypeobject IntTypeobject LongTypeobject NothingTypeobject NullTypeobject ShortTypeobject VoidTypeShow all
Record type.
Record type.
Used by the optimizer to inline classes as records with multiple fields. They are desugared as several local variables by JSDesugaring. Record types cannot cross method boundaries, so they cannot appear as the type of fields or parameters, nor as result types of methods. The compiler itself never generates record types.
Record types currently do not feature any form of subtyping. For R1 to be a subtype of R2, it must have the same fields, in the same order, with equivalent types.
Record types are not subtypes of any. As such, they can never be passed to JavaScript.
Attributes
Attributes
- Companion
- class
- Supertypes
- Self type
-
RecordType.type
16-bit signed integer type. It does not accept null nor undefined.
String type. It does not accept null nor undefined.
Transient TypeRef to store any type as a method parameter or result type.
Transient TypeRef to store any type as a method parameter or result type.
TransientTypeRef cannot be serialized. It is only used in the linker to support some of its desugarings and/or optimizations.
TransientTypeRefs cannot be used for methods in the Public namespace.
The name is used for equality, hashing, and sorting. It is assumed that all occurrences of a TransientTypeRef with the same name associated to an enclosing method namespace (enclosing class, member namespace and simple method name) have the same tpe.
Attributes
- Supertypes
-
trait Serializabletrait Producttrait Equalsclass TypeReftrait Comparable[TypeRef]class Objecttrait Matchableclass AnyShow all
Type of a term (expression or statement) in the IR.
Type of a term (expression or statement) in the IR.
There is a many-to-one relationship from TypeRefs to Types, because java.lang.Object and JS types all collapse to AnyType.
In fact, there are two Types that do not have any real equivalent in type refs: StringType and UndefType, as they refer to the non-null variants of java.lang.String and java.lang.Void, respectively.
Attributes
- Supertypes
- Known subtypes
-
object AnyNotNullTypeobject AnyTypeclass ArrayTypeclass ClassTypeclass ClosureTypeclass PrimTypeclass PrimTypeWithRefobject BooleanTypeobject ByteTypeobject CharTypeobject DoubleTypeobject FloatTypeobject IntTypeobject LongTypeobject NothingTypeobject NullTypeobject ShortTypeobject VoidTypeobject StringTypeobject UndefTypeclass RecordTypeShow all
Type reference (allowed for classOf[], is/asInstanceOf[]).
Type reference (allowed for classOf[], is/asInstanceOf[]).
A TypeRef has exactly the same level of precision as a JVM type. There is a one-to-one relationship between a TypeRef and an instance of java.lang.Class at run-time. This means that:
- All primitive types have their
TypeRef(includingscala.Byteandscala.Short), and they are different from their boxed versions. - JS types are not erased to
any - Array types are like on the JVM
A TypeRef therefore uniquely identifies a classOf[T]. It is also the type refs that are used in method signatures, and which therefore dictate JVM/IR overloading.
Attributes
- Supertypes
- Known subtypes
Void type, the top of type of our type system.
Value members
Concrete methods
Tests whether a type lhs is a subtype of rhs (or equal).
Tests whether a type lhs is a subtype of rhs (or equal).
Value parameters
- isSubclass
-
A function testing whether a class/interface is a subclass of another class/interface.