完整的破坏性改动列表请到这里查看:breaking change issues。
arguments
这是为了遵循ES6箭头函数的语义。之前箭头函数里的arguments
会绑定到箭头函数的参数。参照ES6规范草稿 9.2.12,箭头函数不存在arguments
对象。 从TypeScript 1.5开始,在箭头函数里使用arguments
会被标记成错误以确保你的代码转成ES6时没语义上的错误。
例子:
function f() {
return () => arguments; // Error: The 'arguments' object cannot be referenced in an arrow function.
}
推荐:
// 1. 使用带名字的剩余参数
function f() {
return (...args) => { args; }
}
// 2. 使用函数表达式
function f() {
return function(){ arguments; }
}
对于正常的枚举,在1.5之前,编译器仅会内联常量成员,且成员仅在使用字面量初始化时才被当做是常量。这在判断检举值是使用字面量初始化还是表达式时会行为不一致。从TypeScript 1.5开始,所有非const枚举成员都不会被内联。
例子:
var x = E.a; // previously inlined as "var x = 1; /*E.a*/"
enum E {
a = 1
}
推荐: 在枚举声明里添加const
修饰符来确保它总是被内联。 更多信息,查看#2183。
super
和括号表达式在1.5之前,上下文的类型不会作用于括号表达式内部。这就要求做显示的类型转换,尤其是在必须使用括号来进行表达式转换的场合。
在下面的例子里,m
具有上下文的类型,它在之前的版本里是没有的。
var x: SomeType = (n) => ((m) => q);
var y: SomeType = t ? (m => m.length) : undefined;
class C extends CBase<string> {
constructor() {
super({
method(m) { return m.length; }
});
}
}
TypeScript 1.5改进了lib.d.ts
库里的DOM类型。这是自TypeScript 1.0以来第一次大的改动;为了拥抱标准DOM规范,很多特定于IE的定义被移除了,同时添加了新的类型如Web Audio和触摸事件。
变通方案:
你可以使用旧的lib.d.ts
配合新版本的编译器。你需要在你的工程里引入之前版本的一个拷贝。这里是本次改动之前的lib.d.ts文件(TypeScript 1.5-alpha)。
变动列表:
selection
从Document
类型上移除clipboardData
从Window
类型上移除MSEventAttachmentTarget
onresize
,disabled
,uniqueID
,removeNode
,fireEvent
,currentStyle
,runtimeStyle
从HTMLElement
类型上移除url
从Event
类型上移除execScript
,navigate
,item
从Window
类型上移除documentMode
,parentWindow
,createEventObject
从Document
类型上移除parentWindow
从HTMLDocument
类型上移除setCapture
被完全移除releaseCapture
被完全移除setAttribute
,styleFloat
,pixelLeft
从CSSStyleDeclaration
类型上移除selectorText
从CSSRule
类型上移除CSSStyleSheet.rules
现在是CSSRuleList
类型,而非MSCSSRuleList
documentElement
现在是Element
类型,而非HTMLElement
Event
具有一个新的必需属性returnValue
Node
具有一个新的必需属性baseURI
Element
具有一个新的必需属性classList
Location
具有一个新的必需属性origin
MSPOINTER_TYPE_MOUSE
,MSPOINTER_TYPE_TOUCH
从MSPointerEvent
类型上移除CSSStyleRule
具有一个新的必需属性readonly
execUnsafeLocalFunction
从MSApp
类型上移除toStaticHTML
被移除HTMLCanvasElement.getContext
现在返回CanvasRenderingContext2D | WebGLRenderingContex
Dataview
,Weakmap
,Map
,Set
XMLHttpRequest.send
具有两个重载send(data?: Document): void;
和send(data?: String): void;
window.orientation
现在是string
类型,而非number
attachEvent
和detachEvent
从Window
上移除以下是被新加的DOM类型所部分或全部取代的代码库的代表:
DefinitelyTyped/auth0/auth0.d.ts
DefinitelyTyped/gamepad/gamepad.d.ts
DefinitelyTyped/interactjs/interact.d.ts
DefinitelyTyped/webaudioapi/waa.d.ts
DefinitelyTyped/webcrypto/WebCrypto.d.ts
更多信息,查看完整改动。
按照ES6规范,类代码体现在以严格模式进行解析。行为将相当于在类作用域顶端定义了"use strict"
;它包括限制了把arguments
和eval
做为变量名或参数名的使用,把未来保留字做为变量或参数使用,八进制数字字面量的使用等。