4
4
5
5
## 不允许在箭头函数里引用` arguments `
6
6
7
- 这是为了遵循ES6箭头函数的语义 。之前箭头函数里的` arguments ` 会绑定到箭头函数的参数。参照[ ES6规范草稿 ] ( http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts ) 9.2.12,箭头函数不存在` arguments ` 对象。 从TypeScript 1.5开始 ,在箭头函数里使用` arguments ` 会被标记成错误以确保你的代码转成ES6时没语义上的错误 。
7
+ 这是为了遵循 ES6 箭头函数的语义 。之前箭头函数里的` arguments ` 会绑定到箭头函数的参数。参照[ ES6 规范草稿 ] ( http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts ) 9.2.12,箭头函数不存在` arguments ` 对象。 从 TypeScript 1.5 开始 ,在箭头函数里使用` arguments ` 会被标记成错误以确保你的代码转成 ES6 时没语义上的错误 。
8
8
9
9
** 例子:**
10
10
11
11
``` typescript
12
12
function f() {
13
- return () => arguments ; // Error: The 'arguments' object cannot be referenced in an arrow function.
13
+ return () => arguments ; // Error: The 'arguments' object cannot be referenced in an arrow function.
14
14
}
15
15
```
16
16
@@ -19,101 +19,106 @@ function f() {
19
19
``` typescript
20
20
// 1. 使用带名字的剩余参数
21
21
function f() {
22
- return (... args ) => { args ; }
22
+ return (... args ) => {
23
+ args ;
24
+ };
23
25
}
24
26
25
27
// 2. 使用函数表达式
26
28
function f() {
27
- return function (){ arguments ; }
29
+ return function () {
30
+ arguments ;
31
+ };
28
32
}
29
33
```
30
34
31
35
## 内联枚举引用的改动
32
36
33
- 对于正常的枚举,在1.5之前,编译器_仅会_内联常量成员 ,且成员仅在使用字面量初始化时才被当做是常量。这在判断检举值是使用字面量初始化还是表达式时会行为不一致。从TypeScript 1.5开始,所有非const枚举成员都不会被内联 。
37
+ 对于正常的枚举,在 1.5 之前,编译器 * 仅会 * 内联常量成员 ,且成员仅在使用字面量初始化时才被当做是常量。这在判断检举值是使用字面量初始化还是表达式时会行为不一致。从 TypeScript 1.5 开始,所有非 const 枚举成员都不会被内联 。
34
38
35
39
** 例子:**
36
40
37
41
``` typescript
38
- var x = E .a ; // previously inlined as "var x = 1; /*E.a*/"
42
+ var x = E .a ; // previously inlined as "var x = 1; /*E.a*/"
39
43
40
44
enum E {
41
- a = 1
45
+ a = 1 ,
42
46
}
43
47
```
44
48
45
49
** 推荐:** 在枚举声明里添加` const ` 修饰符来确保它总是被内联。 更多信息,查看[ \# 2183] ( https://github.com/Microsoft/TypeScript/issues/2183 ) 。
46
50
47
51
## 上下文的类型将作用于` super ` 和括号表达式
48
52
49
- 在1.5之前 ,上下文的类型不会作用于括号表达式内部。这就要求做显示的类型转换,尤其是在_必须_使用括号来进行表达式转换的场合 。
53
+ 在 1.5 之前 ,上下文的类型不会作用于括号表达式内部。这就要求做显示的类型转换,尤其是在 * 必须 * 使用括号来进行表达式转换的场合 。
50
54
51
55
在下面的例子里,` m ` 具有上下文的类型,它在之前的版本里是没有的。
52
56
53
57
``` typescript
54
- var x: SomeType = ( n ) => (( m ) => q ) ;
55
- var y: SomeType = t ? ( m => m .length ) : undefined ;
58
+ var x: SomeType = n => m => q ;
59
+ var y: SomeType = t ? m => m .length : undefined ;
56
60
57
61
class C extends CBase <string > {
58
- constructor () {
59
- super ({
60
- method(m ) { return m .length ; }
61
- });
62
- }
62
+ constructor () {
63
+ super ({
64
+ method(m ) {
65
+ return m .length ;
66
+ },
67
+ });
68
+ }
63
69
}
64
70
```
65
71
66
72
更多信息,查看[ \# 1425] ( https://github.com/Microsoft/TypeScript/issues/1425 ) 和[ \# 920] ( https://github.com/Microsoft/TypeScript/issues/920 ) 。
67
73
68
- ## DOM接口的改动
74
+ ## DOM 接口的改动
69
75
70
- TypeScript 1.5改进了 ` lib.d.ts ` 库里的DOM类型。这是自TypeScript 1.0以来第一次大的改动;为了拥抱标准DOM规范,很多特定于IE的定义被移除了,同时添加了新的类型如Web Audio和触摸事件 。
76
+ TypeScript 1.5 改进了 ` lib.d.ts ` 库里的 DOM 类型。这是自 TypeScript 1.0 以来第一次大的改动;为了拥抱标准 DOM 规范,很多特定于 IE 的定义被移除了,同时添加了新的类型如 Web Audio 和触摸事件 。
71
77
72
78
** 变通方案:**
73
79
74
- 你可以使用旧的` lib.d.ts ` 配合新版本的编译器。你需要在你的工程里引入之前版本的一个拷贝。这里是[ 本次改动之前的lib .d.ts文件 \( TypeScript 1.5-alpha\) ] ( https://github.com/Microsoft/TypeScript/blob/v1.5.0-alpha/bin/lib.d.ts ) 。
80
+ 你可以使用旧的` lib.d.ts ` 配合新版本的编译器。你需要在你的工程里引入之前版本的一个拷贝。这里是[ 本次改动之前的 lib .d.ts 文件 \( TypeScript 1.5-alpha\) ] ( https://github.com/Microsoft/TypeScript/blob/v1.5.0-alpha/bin/lib.d.ts ) 。
75
81
76
82
** 变动列表:**
77
83
78
- * 属性` selection ` 从` Document ` 类型上移除
79
- * 属性` clipboardData ` 从` Window ` 类型上移除
80
- * 删除接口` MSEventAttachmentTarget `
81
- * 属性` onresize ` ,` disabled ` ,` uniqueID ` ,` removeNode ` ,` fireEvent ` ,` currentStyle ` ,` runtimeStyle ` 从` HTMLElement ` 类型上移除
82
- * 属性` url ` 从` Event ` 类型上移除
83
- * 属性` execScript ` ,` navigate ` ,` item ` 从` Window ` 类型上移除
84
- * 属性` documentMode ` ,` parentWindow ` ,` createEventObject ` 从` Document ` 类型上移除
85
- * 属性` parentWindow ` 从` HTMLDocument ` 类型上移除
86
- * 属性` setCapture ` 被完全移除
87
- * 属性` releaseCapture ` 被完全移除
88
- * 属性` setAttribute ` ,` styleFloat ` ,` pixelLeft ` 从` CSSStyleDeclaration ` 类型上移除
89
- * 属性` selectorText ` 从` CSSRule ` 类型上移除
90
- * ` CSSStyleSheet.rules ` 现在是` CSSRuleList ` 类型,而非` MSCSSRuleList `
91
- * ` documentElement ` 现在是` Element ` 类型,而非` HTMLElement `
92
- * ` Event ` 具有一个新的必需属性` returnValue `
93
- * ` Node ` 具有一个新的必需属性` baseURI `
94
- * ` Element ` 具有一个新的必需属性` classList `
95
- * ` Location ` 具有一个新的必需属性` origin `
96
- * 属性` MSPOINTER_TYPE_MOUSE ` ,` MSPOINTER_TYPE_TOUCH ` 从` MSPointerEvent ` 类型上移除
97
- * ` CSSStyleRule ` 具有一个新的必需属性` readonly `
98
- * 属性` execUnsafeLocalFunction ` 从` MSApp ` 类型上移除
99
- * 全局方法` toStaticHTML ` 被移除
100
- * ` HTMLCanvasElement.getContext ` 现在返回` CanvasRenderingContext2D | WebGLRenderingContex `
101
- * 移除扩展类型` Dataview ` ,` Weakmap ` ,` Map ` ,` Set `
102
- * ` XMLHttpRequest.send ` 具有两个重载` send(data?: Document): void; ` 和` send(data?: String): void; `
103
- * ` window.orientation ` 现在是` string ` 类型,而非` number `
104
- * 特定于IE的 ` attachEvent ` 和` detachEvent ` 从` Window ` 上移除
105
-
106
- ** 以下是被新加的DOM类型所部分或全部取代的代码库的代表 :**
107
-
108
- * ` DefinitelyTyped/auth0/auth0.d.ts `
109
- * ` DefinitelyTyped/gamepad/gamepad.d.ts `
110
- * ` DefinitelyTyped/interactjs/interact.d.ts `
111
- * ` DefinitelyTyped/webaudioapi/waa.d.ts `
112
- * ` DefinitelyTyped/webcrypto/WebCrypto.d.ts `
84
+ - 属性` selection ` 从` Document ` 类型上移除
85
+ - 属性` clipboardData ` 从` Window ` 类型上移除
86
+ - 删除接口` MSEventAttachmentTarget `
87
+ - 属性` onresize ` ,` disabled ` ,` uniqueID ` ,` removeNode ` ,` fireEvent ` ,` currentStyle ` ,` runtimeStyle ` 从` HTMLElement ` 类型上移除
88
+ - 属性` url ` 从` Event ` 类型上移除
89
+ - 属性` execScript ` ,` navigate ` ,` item ` 从` Window ` 类型上移除
90
+ - 属性` documentMode ` ,` parentWindow ` ,` createEventObject ` 从` Document ` 类型上移除
91
+ - 属性` parentWindow ` 从` HTMLDocument ` 类型上移除
92
+ - 属性` setCapture ` 被完全移除
93
+ - 属性` releaseCapture ` 被完全移除
94
+ - 属性` setAttribute ` ,` styleFloat ` ,` pixelLeft ` 从` CSSStyleDeclaration ` 类型上移除
95
+ - 属性` selectorText ` 从` CSSRule ` 类型上移除
96
+ - ` CSSStyleSheet.rules ` 现在是` CSSRuleList ` 类型,而非` MSCSSRuleList `
97
+ - ` documentElement ` 现在是` Element ` 类型,而非` HTMLElement `
98
+ - ` Event ` 具有一个新的必需属性` returnValue `
99
+ - ` Node ` 具有一个新的必需属性` baseURI `
100
+ - ` Element ` 具有一个新的必需属性` classList `
101
+ - ` Location ` 具有一个新的必需属性` origin `
102
+ - 属性` MSPOINTER_TYPE_MOUSE ` ,` MSPOINTER_TYPE_TOUCH ` 从` MSPointerEvent ` 类型上移除
103
+ - ` CSSStyleRule ` 具有一个新的必需属性` readonly `
104
+ - 属性` execUnsafeLocalFunction ` 从` MSApp ` 类型上移除
105
+ - 全局方法` toStaticHTML ` 被移除
106
+ - ` HTMLCanvasElement.getContext ` 现在返回` CanvasRenderingContext2D | WebGLRenderingContex `
107
+ - 移除扩展类型` Dataview ` ,` Weakmap ` ,` Map ` ,` Set `
108
+ - ` XMLHttpRequest.send ` 具有两个重载` send(data?: Document): void; ` 和` send(data?: String): void; `
109
+ - ` window.orientation ` 现在是` string ` 类型,而非` number `
110
+ - 特定于 IE 的 ` attachEvent ` 和` detachEvent ` 从` Window ` 上移除
111
+
112
+ ** 以下是被新加的 DOM 类型所部分或全部取代的代码库的代表 :**
113
+
114
+ - ` DefinitelyTyped/auth0/auth0.d.ts `
115
+ - ` DefinitelyTyped/gamepad/gamepad.d.ts `
116
+ - ` DefinitelyTyped/interactjs/interact.d.ts `
117
+ - ` DefinitelyTyped/webaudioapi/waa.d.ts `
118
+ - ` DefinitelyTyped/webcrypto/WebCrypto.d.ts `
113
119
114
120
更多信息,查看[ 完整改动] ( https://github.com/Microsoft/TypeScript/pull/2739 ) 。
115
121
116
122
## 类代码体将以严格格式解析
117
123
118
- 按照[ ES6规范] ( http://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-code ) ,类代码体现在以严格模式进行解析。行为将相当于在类作用域顶端定义了` "use strict" ` ;它包括限制了把` arguments ` 和` eval ` 做为变量名或参数名的使用,把未来保留字做为变量或参数使用,八进制数字字面量的使用等。
119
-
124
+ 按照[ ES6 规范] ( http://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-code ) ,类代码体现在以严格模式进行解析。行为将相当于在类作用域顶端定义了` "use strict" ` ;它包括限制了把` arguments ` 和` eval ` 做为变量名或参数名的使用,把未来保留字做为变量或参数使用,八进制数字字面量的使用等。
0 commit comments