TypeScript
Language Specification
Version 1.68
August, 2015
January, 2016
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
http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0.
TypeScript is a trademark of Microsoft Corporation.
i
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
ii
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 .................................................................................................................................................................. 38
3.7.1 Instance Types ........................................................................................................................................................... 39
3.8 Specifying Types ............................................................................................................................................................ 39
3.8.1 Predefined Types ...................................................................................................................................................... 40
3.8.2 Type References ....................................................................................................................................................... 40
3.8.3 Object Type Literals ................................................................................................................................................. 42
3.8.4 Array Type Literals ................................................................................................................................................... 43
3.8.5 Tuple Type Literals ................................................................................................................................................... 43
3.8.6 Union Type Literals .................................................................................................................................................. 43
3.8.7 Intersection Type Literals ...................................................................................................................................... 44
3.8.8 Function Type Literals ............................................................................................................................................ 44
3.8.9 Constructor Type Literals ...................................................................................................................................... 44
3.8.10 Type Queries .............................................................................................................................................................. 45
3.9 Specifying Members .................................................................................................................................................... 47
3.9.1 Property Signatures................................................................................................................................................. 47
3.9.2 Call Signatures........................................................................................................................................................... 47
3.9.3 Construct Signatures .............................................................................................................................................. 51
3.9.4 Index Signatures ....................................................................................................................................................... 51
3.9.5 Method Signatures .................................................................................................................................................. 52
3.10 Type Aliases ..................................................................................................................................................................... 53
3.11 Type Relationships ........................................................................................................................................................ 55
3.11.1 Apparent Members ................................................................................................................................................. 55
3.11.2 Type and Member Identity ................................................................................................................................... 56
3.11.3 Subtypes and Supertypes ..................................................................................................................................... 57
3.11.4 Assignment Compatibility .................................................................................................................................... 59
3.11.5 Excess Properties ...................................................................................................................................................... 60
3.11.6 Contextual Signature Instantiation ................................................................................................................... 61
3.11.7 Type Inference ........................................................................................................................................................... 62
3.11.8 Recursive Types ........................................................................................................................................................ 63
3.12 Widened Types .............................................................................................................................................................. 64
4 Expressions ................................................................................................................................................................................. 65
4.1 Values and References ................................................................................................................................................ 65
4.2 The this Keyword ........................................................................................................................................................... 65
4.3 Identifiers.......................................................................................................................................................................... 66
4.4 Literals ............................................................................................................................................................................... 66
iii
4.5 Object Literals ................................................................................................................................................................. 66
4.6 Array Literals ................................................................................................................................................................... 68
4.7 Template Literals ........................................................................................................................................................... 69
4.8 Parentheses ..................................................................................................................................................................... 69
4.9 The super Keyword ....................................................................................................................................................... 70
4.9.1 Super Calls .................................................................................................................................................................. 70
4.9.2 Super Property Access ........................................................................................................................................... 70
4.10 Function Expressions ................................................................................................................................................... 71
4.11 Arrow Functions ............................................................................................................................................................. 72
4.12 Class Expressions ........................................................................................................................................................... 74
4.13 Property Access ............................................................................................................................................................. 74
4.14 The new Operator ......................................................................................................................................................... 75
4.15 Function Calls ................................................................................................................................................................. 76
4.15.1 Overload Resolution ............................................................................................................................................... 76
4.15.2 Type Argument Inference ..................................................................................................................................... 77
4.15.3 Grammar Ambiguities ............................................................................................................................................ 80
4.16 Type Assertions .............................................................................................................................................................. 80
4.17 JSX Expressions .............................................................................................................................................................. 81
4.18 Unary Operators ............................................................................................................................................................ 81
4.18.1 The ++ and -- operators ....................................................................................................................................... 82
4.18.2 The +, –, and ~ operators ..................................................................................................................................... 82
4.18.3 The ! operator ............................................................................................................................................................ 82
4.18.4 The delete Operator ................................................................................................................................................ 82
4.18.5 The void Operator ................................................................................................................................................... 82
4.18.6 The typeof Operator ............................................................................................................................................... 83
4.19 Binary Operators ........................................................................................................................................................... 83
4.19.1 The *, /, %, –, <<, >>, >>>, &, ^, and | operators ...................................................................................... 83
4.19.2 The + operator .......................................................................................................................................................... 83
4.19.3 The <, >, <=, >=, ==, !=, ===, and !== operators ................................................................................... 84
4.19.4 The instanceof operator ........................................................................................................................................ 84
4.19.5 The in operator ......................................................................................................................................................... 85
4.19.6 The && operator ...................................................................................................................................................... 85
4.19.7 The || operator ........................................................................................................................................................... 85
4.20 The Conditional Operator .......................................................................................................................................... 86
4.21 Assignment Operators ................................................................................................................................................ 86
4.21.1 Destructuring Assignment .................................................................................................................................... 86
4.22 The Comma Operator ................................................................................................................................................. 88
4.23 Contextually Typed Expressions .............................................................................................................................. 88
4.24 Type Guards .................................................................................................................................................................... 89
5 Statements .................................................................................................................................................................................. 95
5.1 Blocks ................................................................................................................................................................................. 95