完整的破坏性改动列表请到这里查看:
breaking change issues
。
这是为了遵循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。
在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; }
更多信息,查看#1425和#920。
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
特定于IE的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
做为变量名或参数名的使用,把未来保留字做为变量或参数使用,八进制数字字面量的使用等。