TypeScript - Language Specification, Version 1

TypeScript

Language Specification Version 1.6 August, 2015

Microsoft is making this Specification available under the Open Web Foundation Final Specification Agreement Version 1.0 ("OWF 1.0") as of October 1, 2012. The OWF 1.0 is available at .

TypeScript is a trademark of Microsoft Corporation.

Table of Contents

1 Introduction...................................................................................................................................................................................1 1.1 Ambient Declarations.....................................................................................................................................................3 1.2 Function Types ..................................................................................................................................................................3 1.3 Object Types ......................................................................................................................................................................4 1.4 Structural Subtyping .......................................................................................................................................................6 1.5 Contextual Typing............................................................................................................................................................7 1.6 Classes ..................................................................................................................................................................................8 1.7 Enum Types ..................................................................................................................................................................... 10 1.8 Overloading on String Parameters......................................................................................................................... 12 1.9 Generic Types and Functions ................................................................................................................................... 12 1.10 Namespaces .................................................................................................................................................................... 14 1.11 Modules ............................................................................................................................................................................ 16

2 Basic Concepts .......................................................................................................................................................................... 17 2.1 Grammar Conventions ................................................................................................................................................ 17 2.2 Names................................................................................................................................................................................ 17 2.2.1 Reserved Words........................................................................................................................................................ 18 2.2.2 Property Names........................................................................................................................................................ 18 2.2.3 Computed Property Names ................................................................................................................................. 19 2.3 Declarations..................................................................................................................................................................... 19 2.4 Scopes ............................................................................................................................................................................... 22

3 Types ............................................................................................................................................................................................. 25 3.1 The Any Type .................................................................................................................................................................. 26 3.2 Primitive Types ............................................................................................................................................................... 26 3.2.1 The Number Type .................................................................................................................................................... 26 3.2.2 The Boolean Type .................................................................................................................................................... 27 3.2.3 The String Type......................................................................................................................................................... 27 3.2.4 The Symbol Type...................................................................................................................................................... 27 3.2.5 The Void Type............................................................................................................................................................ 28 3.2.6 The Null Type............................................................................................................................................................. 28 3.2.7 The Undefined Type................................................................................................................................................ 29 3.2.8 Enum Types ................................................................................................................................................................ 29 3.2.9 String Literal Types .................................................................................................................................................. 29 3.3 Object Types ................................................................................................................................................................... 29 3.3.1 Named Type References ....................................................................................................................................... 30 3.3.2 Array Types ................................................................................................................................................................. 30 3.3.3 Tuple Types ................................................................................................................................................................ 30 3.3.4 Function Types .......................................................................................................................................................... 31 3.3.5 Constructor Types.................................................................................................................................................... 31

i

3.3.6 Members ..................................................................................................................................................................... 31 3.4 Union Types..................................................................................................................................................................... 32 3.5 Intersection Types......................................................................................................................................................... 34 3.6 Type Parameters ............................................................................................................................................................ 35

3.6.1 Type Parameter Lists............................................................................................................................................... 35 3.6.2 Type Argument Lists ............................................................................................................................................... 36 3.7 Named Types.................................................................................................................................................................. 37 3.7.1 Instance Types........................................................................................................................................................... 38 3.8 Specifying Types............................................................................................................................................................ 38 3.8.1 Predefined Types...................................................................................................................................................... 39 3.8.2 Type References ....................................................................................................................................................... 39 3.8.3 Object Type Literals................................................................................................................................................. 41 3.8.4 Array Type Literals ................................................................................................................................................... 42 3.8.5 Tuple Type Literals................................................................................................................................................... 42 3.8.6 Union Type Literals.................................................................................................................................................. 42 3.8.7 Intersection Type Literals ...................................................................................................................................... 43 3.8.8 Function Type Literals ............................................................................................................................................ 43 3.8.9 Constructor Type Literals ...................................................................................................................................... 43 3.8.10 Type Queries .............................................................................................................................................................. 44 3.9 Specifying Members .................................................................................................................................................... 45 3.9.1 Property Signatures................................................................................................................................................. 45 3.9.2 Call Signatures........................................................................................................................................................... 45 3.9.3 Construct Signatures .............................................................................................................................................. 49 3.9.4 Index Signatures ....................................................................................................................................................... 49 3.9.5 Method Signatures.................................................................................................................................................. 50 3.10 Type Aliases..................................................................................................................................................................... 51 3.11 Type Relationships........................................................................................................................................................ 53 3.11.1 Apparent Members ................................................................................................................................................. 53 3.11.2 Type and Member Identity................................................................................................................................... 55 3.11.3 Subtypes and Supertypes ..................................................................................................................................... 56 3.11.4 Assignment Compatibility .................................................................................................................................... 57 3.11.5 Excess Properties ...................................................................................................................................................... 58 3.11.6 Contextual Signature Instantiation ................................................................................................................... 59 3.11.7 Type Inference........................................................................................................................................................... 60 3.11.8 Recursive Types ........................................................................................................................................................ 61 3.12 Widened Types .............................................................................................................................................................. 62

4 Expressions ................................................................................................................................................................................. 63 4.1 Values and References ................................................................................................................................................ 63 4.2 The this Keyword ........................................................................................................................................................... 63 4.3 Identifiers.......................................................................................................................................................................... 64 4.4 Literals ............................................................................................................................................................................... 64

ii

4.5 Object Literals................................................................................................................................................................. 64 4.6 Array Literals ................................................................................................................................................................... 66 4.7 Template Literals ........................................................................................................................................................... 67 4.8 Parentheses ..................................................................................................................................................................... 67 4.9 The super Keyword....................................................................................................................................................... 68

4.9.1 Super Calls .................................................................................................................................................................. 68 4.9.2 Super Property Access ........................................................................................................................................... 68 4.10 Function Expressions ................................................................................................................................................... 69 4.11 Arrow Functions............................................................................................................................................................. 70 4.12 Class Expressions........................................................................................................................................................... 72 4.13 Property Access ............................................................................................................................................................. 72 4.14 The new Operator ......................................................................................................................................................... 73 4.15 Function Calls ................................................................................................................................................................. 74 4.15.1 Overload Resolution ............................................................................................................................................... 74 4.15.2 Type Argument Inference ..................................................................................................................................... 75 4.15.3 Grammar Ambiguities ............................................................................................................................................ 78 4.16 Type Assertions.............................................................................................................................................................. 78 4.17 JSX Expressions .............................................................................................................................................................. 79 4.18 Unary Operators ............................................................................................................................................................ 79 4.18.1 The ++ and -- operators....................................................................................................................................... 79 4.18.2 The +, ?, and ~ operators ..................................................................................................................................... 80 4.18.3 The ! operator............................................................................................................................................................ 80 4.18.4 The delete Operator................................................................................................................................................ 80 4.18.5 The void Operator ................................................................................................................................................... 80 4.18.6 The typeof Operator ............................................................................................................................................... 80 4.19 Binary Operators ........................................................................................................................................................... 81 4.19.1 The *, /, %, ?, , >>>, &, ^, and | operators...................................................................................... 81 4.19.2 The + operator .......................................................................................................................................................... 81 4.19.3 The , =, ==, !=, ===, and !== operators ................................................................................... 82 4.19.4 The instanceof operator ........................................................................................................................................ 82 4.19.5 The in operator ......................................................................................................................................................... 83 4.19.6 The && operator...................................................................................................................................................... 83 4.19.7 The || operator ........................................................................................................................................................... 83 4.20 The Conditional Operator.......................................................................................................................................... 83 4.21 Assignment Operators ................................................................................................................................................ 84 4.21.1 Destructuring Assignment.................................................................................................................................... 84 4.22 The Comma Operator ................................................................................................................................................. 85 4.23 Contextually Typed Expressions .............................................................................................................................. 85 4.24 Type Guards .................................................................................................................................................................... 87

5 Statements .................................................................................................................................................................................. 91 5.1 Blocks ................................................................................................................................................................................. 91

iii

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download