TypeScript 2.5
可选的 catch 子句变量
感谢 @tinganho 的工作,TypeScript 2.5 实现了一个新的 ECMAScript 特性,允许用户在 catch 子句中省略变量。 例如,在使用 JSON.parse 时,你可能需要用 try/catch 包装对函数的调用,但你可能最终不会使用输入错误时抛出的 SyntaxError。
let input = "...";
try {
JSON.parse(input);
} catch {
// ^ 注意我们的 `catch` 子句没有声明变量。
console.log("Invalid JSON given\n\n" + input);
}在 checkJs/@ts-check 模式下的类型断言/转换语法
TypeScript 2.5 引入了在项目中使用纯 JavaScript 时断言表达式类型的能力。 语法是 /** @type {...} */ 注解注释,后跟一个需要重新计算类型的括号表达式。 例如:
var x = /** @type {SomeType} */ AnyParenthesizedExpression;去重和重定向的包
当在 TypeScript 2.5 中使用 Node 模块解析策略导入时,编译器现在会检查文件是否源自“相同”的包。 如果一个文件源自一个包,其 package.json 包含与先前遇到的包相同的 name 和 version 字段,则 TypeScript 将自身重定向到最顶层的包。 这有助于解决两个包可能包含相同的类声明但包含导致它们在结构上不兼容的 private 成员的问题。
作为一个额外的好处,这还可以通过避免从重复的包加载 .d.ts 文件来减少编译器和语言服务的内存和运行时占用。
--preserveSymlinks 编译器标志
TypeScript 2.5 带来了 preserveSymlinks 标志,其行为与 Node.js 中的 --preserve-symlinks 标志 相似。 此标志还表现出与 Webpack 的 resolve.symlinks 选项相反的行为(即,将 TypeScript 的 preserveSymlinks 设置为 true 相当于将 Webpack 的 resolve.symlinks 设置为 false,反之亦然)。
在此模式下,对模块和包的引用(例如 import 和 /// <reference type="..." /> 指令)都将相对于符号链接文件的位置解析,而不是相对于符号链接解析到的路径。 关于更具体的示例,请参考 Node.js 网站上的文档。