TypeScript 概述
TypeScript 是一种建立在 JavaScript 之上的脚本语言,用于强类型安全编程。TypeScript 在前端江湖业界可谓非常有名。
微软在上周刚刚发布了 TypeScript 4.9。我们来看一看它有什么新特性,新机制。
TypeScript 4.9 新特性
satisfies 操作符
satisfies 运算符的目的是在不改变量类型的情况下对变量强制执行条件。
例如,我们想让颜色是字符串或 RGB 颜色,代码看起来像这样:
type RGB = [red: number, green: number, blue: number];
type Color = RGB | string;
const myColor: Color = 'blue';
我们并不知道myColor是字符串还是 RGB 数组成员。所以还不能做这样的事情,myColor.toLowerCase()函数也处理不了,即便它是一个字符串。
现在好了,使用 TS 4.9,satisfies 操作符使这种操作成为可能:
type RGB = [red: number, green: number, blue: number];
type Color = RGB | string;
const myColor = 'blue' satisfies Color; // works
const myIncorrectColor = 420 satisfies Color; // error
myColor.toUpperCase(); // valid because myColor is a string
类中的自动访问器
TS 4.9 支持 ECMAScript 中即将推出的功能,称为自动访问器的机制。自动访问器的声明就像类的属性一样,只是它们是用accessor关键字声明的即可。
class Person {
accessor name: string;
constructor(name: string) {
this.name = name;
}
}
类似于以下类的声明方式:
class Person {
#__name: string;
get name() {
return this.#__name;
}
set name(value: string) {
this.#__name = name;
}
constructor(name: string) {
this.name = name;
}
}
检查是否相等 NaN
NaN是一个特殊的数值,代表“不是数字”。不过,没有什么是永远等于NaN。
TypeScript 现在在与NaN 直接比较时会出错,并且会建议使用Number.isNaNinstead 的一些变体。
“删除未使用的导入”和“排序导入”命令
过去,TypeScript 在 TS 4.3 上只支持两个命令来管理导入:“Organize Imports”和“Sort Imports”。
TypeScript 4.9 添加了更多内容,现在它提供了“Remove Unused Imports”。TypeScript 现在会删除未使用的导入名称与语句,但会单独保留相对顺序。
未声明的属性与in操作符
作为开发人员,我们经常需要处理在运行时不完全已知的值。在现实情况里,我们常常不知道属性是否存在,无论我们是从服务器获得响应还是读取配置文件。
JavaScript 的in运算符可以检查对象上是否存在某属性。
TypeScript 4.9 的in 运算符在缩小根本不存在属性或类型时更加强大。该语言会将它们的类型与.Record<"property-key-being-checked", unknown> 比较。
TypeScript 4.9 还加强了一些关于如何in操作符使用的检查,以确保左侧可分配给 type string | number | symbol,右侧可分配给object. 这有助于检查开发者是否使用了有效的属性键值,而不在出现例外的检查。
结论
本文对 TypeScript 4.9 新特性的总结,让我们一起走在前端技术栈的最新潮流!
作者:东方春晓
说明:如果你觉得这篇文章有帮助,可以在这里请作者喝杯咖啡~
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。