23.06.2015 Views

TypeScript Language Specification v1.5

TypeScript Language Specification v1.5

TypeScript Language Specification v1.5

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3.7.1 Predefined Types<br />

The any, number, boolean, string, and void keywords reference the Any type and the Number, Boolean,<br />

String, and Void primitive types respectively.<br />

PredefinedType:<br />

any<br />

number<br />

boolean<br />

string<br />

void<br />

The predefined type keywords are reserved and cannot be used as names of user defined types.<br />

3.7.2 Type References<br />

A type reference references a named type or type parameter through its name and, in the case of a<br />

generic type, supplies a type argument list.<br />

TypeReference:<br />

TypeName [no LineTerminator here] TypeArguments opt<br />

TypeName:<br />

Identifier<br />

ModuleName . Identifier<br />

ModuleName:<br />

Identifier<br />

ModuleName . Identifier<br />

A TypeReference consists of a TypeName that a references a named type or type parameter. A reference to<br />

a generic type must be followed by a list of TypeArguments (section 3.5.2).<br />

Resolution of a TypeName consisting of a single identifier is described in section 2.4.<br />

Resolution of a TypeName of the form M.N, where M is a ModuleName and N is an Identifier, proceeds by<br />

first resolving the module name M. If the resolution of M is successful and the resulting module contains<br />

an exported named type N, then M.N refers to that member. Otherwise, M.N is undefined.<br />

Resolution of a ModuleName consisting of a single identifier is described in section 2.4.<br />

Resolution of a ModuleName of the form M.N, where M is a ModuleName and N is an Identifier, proceeds<br />

by first resolving the module name M. If the resolution of M is successful and the resulting module<br />

contains an exported module member N, then M.N refers to that member. Otherwise, M.N is undefined.<br />

A type reference to a generic type is required to specify exactly one type argument for each type<br />

parameter of the referenced generic type, and each type argument must be assignable to (section 3.10.4)<br />

the constraint of the corresponding type parameter or otherwise an error occurs. An example:<br />

36

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!