微软发布TypeScript 3.2候选版,增加新标签以及类型

发布TypeScript 3.1候选版后隔2个月,微软再次发布更新,发布TypeScript 3.2候选版,除了提供更严格的绑定(Binding)、呼叫(Call)和应用(Apply)检查标签strictBindCallApply,另外还允许在泛型上使用展开运算符,并增加了新的BigInt类型。

微软发布TypeScript 3.2候选版,增加新标签以及类型

TypeScript 3.2将提供更严格的绑定、呼叫和应用检查,微软TypeScript项目经理Daniel Rosenwasser解释,在JavaScript中绑定、呼叫和应用是函数中的方法,允许开发者执行诸如绑定或是部分应用参数,使用不同的值呼叫函数,或是把阵列当作参数呼叫函数等操作。

不过,由于早期,TypeScript缺乏对这些函数进行建模的能力,而绑定、呼叫和应用都被设计成输入任意数量的参数,并且回传任意参数的形式。虽然在ES2015的箭头函式和Rest/Spread参数,提供了开发者另一种新语法,能简单的以更有效率的方式表达其中一些方法,但是由于有以类型安全(Type-safe)的方式对这些模式建模的需求,让微软重新正视了这个问题。

Daniel Rosenwasser提到,TypeScript存在两个功能,可以开启正确的抽象,在不需要写死代码的情况下,就能精确的设计绑定、呼叫和应用,这两个功能分别是在TypeScript 2.0就有的this参数类型,以及TypeScript 3.0中元组(Tuple)类型的建模参数列表(Modeling Parameter Lists)。

结合两者,当开发者使用strictBindCallApply新标签的时候,可以针对绑定、呼叫和应用的使用,进行更严格的检查。使用strictBindCallApply时,由新的全域类型CallableFunction描述可呼叫组件的方法,该类型声明了更严格的绑定、呼叫和应用的签章版本。

而对于泛型的更新,TypeScript 3.2现在允许在泛型上使用展开运算符(Spread Operator),而这让需要参数的地方得以进行可迭代扩展,如获取类似阵列的组件,将其扩展成一组可以复制到另一个阵列的Item。

Daniel Rosenwasser提到,类型系统尝试对展开运算符行为建模,并且覆写新的属性或是尝试忽略方法,但不幸的是,过去这些事情都无法在泛型中进行。但这个问题现在获得解决,TypeScript 3.2允许物件在泛型中展开,并使用Intersections对其建模。另外,泛型还可以与Rest模式一同使用,以类似展开(Spread)的方法,其创建了一个新组件,并排除了部分属性。

第三个TypeScript 3.2的重要更新便是开始支持BigInt,让编程可以在理论上模拟任意大整数(Large integers),而这也是即将到来的ECMAScript提案。Daniel Rosenwasser表示,TypeScript 3.2为BigInts增加了类型检查,并支持针对esnext发出BigInt常值(Literal)。TypeScript中的BigInt引入一种称为bigint的新原语类型,他特别强调,BigInt支持仅适用于esnext目标。

相关推荐