完整的破坏性改动列表请到这里查看:breaking change issues. 对函数或类表达式的捕获变量不进行类型细化(narrowing) 类型细化不会在函数,类和lambda表达式上进行。 例子 var x: number | string; if (typeof x === "number") { function inner(): number { retur
完整的破坏性改动列表请到这里查看:breaking change issues. 生成的构造函数代码将this的值替换为super(...)调用的返回值 在ES2015中,如果构造函数返回一个对象,那么对于任何super(...)的调用者将隐式地替换掉this的值。 因此,有必要获取任何可能的super(...)的返回值并用this进行替换。 示例 定义一个类C: class C extends
完整的破坏性改动列表请到这里查看:breaking change issues. 标准库里的DOM API变动 现在标准库里有Window.fetch的声明;仍依赖于@types\whatwg-fetch会产生声明冲突错误,需要被移除。 现在标准库里有ServiceWorker的声明;仍依赖于@types\service_worker_api会产生声明冲突错误,需要被移除。
完整的破坏性改动列表请到这里查看:breaking change issues. 空的泛型列表会被标记为错误 示例 class X<> {} // Error: Type parameter list cannot be empty. function f<>() {} // Error: Type parameter list cannot be empty. const x: X<> =
完整的破坏性改动列表请到这里查看:breaking change issues。 弱类型检测 TypeScript 2.4引入了“弱类型(weak type)”的概念。 若一个类型只包含可选的属性,那么它就被认为是弱(weak)的。 例如,下面的Options类型就是一个弱类型: interface Options { data?: string, timeout?: number
完整的破坏性改动列表请到这里查看:breaking change issues. 只写引用未使用 以下代码用于没有编译错误: function f(n: number) { n = 0; } class C { private m: number; constructor() { this.m = 0; } } 现在,当启用--noUnusedLo
完整的破坏性改动列表请到这里查看:breaking change issues. 元组现在具有固定长度的属性 以下代码用于没有编译错误: var pair: [number, number] = [1, 2]; var triple: [number, number, number] = [1, 2, 3]; pair = triple; 但是,这是一个错误: triple = pair; 现在,
在--noUnusedParameters下检查未使用的类型参数 根据 #20568,未使用的类型参数之前在--noUnusedLocals下报告,但现在报告在--noUnusedParameters下。 从lib.d.ts中删除了一些Microsoft 专用的类型 从DOM定义中删除一些Microsoft 专用的类型以更好地与标准对齐。 删除的类型包括: MSApp MSAppAsyncOper
一些浏览器厂商特定的类型从lib.d.ts中被移除 TypeScript内置的.d.ts库(lib.d.ts等)现在会部分地从DOM规范的Web IDL文件中生成。 因此有一些浏览器厂商特定的类型被移除了。 点击这里查看被移除类型的完整列表: CanvasRenderingContext2D.mozImageSmoothingEnabled CanvasRenderingContext2D.msF
改进性能 1.1版本的编译器速度比所有之前发布的版本快4倍。阅读这篇博客里的有关图表 更好的模块可见性规则 TypeScript现在只在使用--declaration标记时才严格强制模块里类型的可见性。这在Angular里很有用,例如: module MyControllers { interface ZooScope extends ng.IScope { animals: Anim
受保护的 类里面新的protected修饰符作用与其它语言如C++,C#和Java中的一样。一个类的protected成员只在这个类的子类中可见: class Thing { protected doSomething() { /* ... */ } } class MyThing extends Thing { public myMethod() { // OK,可以在子类里访
联合类型 概述 联合类型有助于表示一个值的类型可以是多种类型之一的情况。比如,有一个API接命令行传入string类型,string[]类型或者是一个返回string的函数。你就可以这样写: interface RunOptions { program: string; commandline: string[]|string|(() => string); } 给联合类型赋值也很直观
ES6 模块 TypeScript 1.5 支持 ECMAScript 6 (ES6) 模块. ES6 模块可以看做之前 TypeScript 的外部模块换上了新的语法: ES6 模块是分开加载的源文件, 这些文件还可能引入其他模块, 并且导出部分供外部可访问. ES6 模块新增了几种导入和导出声明. 我们建议使用 TypeScript 开发的库和应用能够更新到新的语法, 但不做强制要求. 新的
JSX 支持 JSX 是一种可嵌入的类似 XML 的语法. 它将最终被转换为合法的 JavaScript, 但转换的语义和具体实现有关. JSX 随着 React 流行起来, 也出现在其他应用中. TypeScript 1.6 支持 JavaScript 文件中 JSX 的嵌入, 类型检查, 以及直接编译为 JavaScript 的选项. 新的 .tsx 文件扩展名和 as 运算符 TypeScr
支持 async/await 编译到 ES6 (Node v4+) TypeScript 目前在已经原生支持 ES6 generator 的引擎 (比如 Node v4 及以上版本) 上支持异步函数. 异步函数前置 async 关键字; await 会暂停执行, 直到一个异步函数执行后返回的 promise 被 fulfill 后获得它的值. 例子 在下面的例子中, 输入的内容将会延时 400 毫