44
55## 不允许在箭头函数里引用` arguments `
66
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 时没语义上的错误 。
88
99** 例子:**
1010
1111``` typescript
1212function 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.
1414}
1515```
1616
@@ -19,101 +19,106 @@ function f() {
1919``` typescript
2020// 1. 使用带名字的剩余参数
2121function f() {
22- return (... args ) => { args ; }
22+ return (... args ) => {
23+ args ;
24+ };
2325}
2426
2527// 2. 使用函数表达式
2628function f() {
27- return function (){ arguments ; }
29+ return function () {
30+ arguments ;
31+ };
2832}
2933```
3034
3135## 内联枚举引用的改动
3236
33- 对于正常的枚举,在1.5之前,编译器_仅会_内联常量成员 ,且成员仅在使用字面量初始化时才被当做是常量。这在判断检举值是使用字面量初始化还是表达式时会行为不一致。从TypeScript 1.5开始,所有非const枚举成员都不会被内联 。
37+ 对于正常的枚举,在 1.5 之前,编译器 * 仅会 * 内联常量成员 ,且成员仅在使用字面量初始化时才被当做是常量。这在判断检举值是使用字面量初始化还是表达式时会行为不一致。从 TypeScript 1.5 开始,所有非 const 枚举成员都不会被内联 。
3438
3539** 例子:**
3640
3741``` 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*/"
3943
4044enum E {
41- a = 1
45+ a = 1 ,
4246}
4347```
4448
4549** 推荐:** 在枚举声明里添加` const ` 修饰符来确保它总是被内联。 更多信息,查看[ \# 2183] ( https://github.com/Microsoft/TypeScript/issues/2183 ) 。
4650
4751## 上下文的类型将作用于` super ` 和括号表达式
4852
49- 在1.5之前 ,上下文的类型不会作用于括号表达式内部。这就要求做显示的类型转换,尤其是在_必须_使用括号来进行表达式转换的场合 。
53+ 在 1.5 之前 ,上下文的类型不会作用于括号表达式内部。这就要求做显示的类型转换,尤其是在 * 必须 * 使用括号来进行表达式转换的场合 。
5054
5155在下面的例子里,` m ` 具有上下文的类型,它在之前的版本里是没有的。
5256
5357``` 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 ;
5660
5761class 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+ }
6369}
6470```
6571
6672更多信息,查看[ \# 1425] ( https://github.com/Microsoft/TypeScript/issues/1425 ) 和[ \# 920] ( https://github.com/Microsoft/TypeScript/issues/920 ) 。
6773
68- ## DOM接口的改动
74+ ## DOM 接口的改动
6975
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 和触摸事件 。
7177
7278** 变通方案:**
7379
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 ) 。
7581
7682** 变动列表:**
7783
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 `
113119
114120更多信息,查看[ 完整改动] ( https://github.com/Microsoft/TypeScript/pull/2739 ) 。
115121
116122## 类代码体将以严格格式解析
117123
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