前端Typescript - 也许你还不知道的几个新特性

我们已经使用了很多Typescript的特性,它的好处不言而喻。但随着新版本的频繁发布,很容易错失很多新特性。我也不例外,很多东西后来看文档才发现,其实人家早已支持了。

这篇文章我们一起来看下这些新东西,看看你是否已经掌握?

区别unknown vs any

unknownany的更安全版本

在弄清楚它俩有什么不同,我们先看看他们有什么相同的地方。

我们可以给他们设置任何类型的值,它们都可以正常工作而不出错。

前端Typescript - 也许你还不知道的几个新特性

不同点在哪?

any 运行我们干任何事情,都不会报错, 比如下面这个,它在编译的时候不会报错,但运行时会崩溃。简言之就是编译器不会对any类型做任何检查

前端Typescript - 也许你还不知道的几个新特性

unknown 就是为了阻止这种事情发生。对unknown做任何操作,编译器不允许

前端Typescript - 也许你还不知道的几个新特性

要使用unknown,必须你确定你在干什么,比如用下面这几种方法,你可以对unknown操作。

前端Typescript - 也许你还不知道的几个新特性

使用类型推断


前端Typescript - 也许你还不知道的几个新特性

使用类型守卫


前端Typescript - 也许你还不知道的几个新特性

自定义类型守卫

索引访问类型(查找类型)

我们可以使用索引来查找一个已知类型的字段,从而新建一个类型。

前端Typescript - 也许你还不知道的几个新特性

如上图,我们从已知类型上新建了id, Session,Street, Addons类型。

我们甚至可以直接用作函数参数

前端Typescript - 也许你还不知道的几个新特性

infer关键字

它允许你从条件类型中的类型推断出一个新类型,如下

前端Typescript - 也许你还不知道的几个新特性

这里我们推断出了AddonType类型,看下面的智能提示。

前端Typescript - 也许你还不知道的几个新特性

什么时候使用never

never 表示一个值永远不被观察到,或者没有返回。比如一个函数发生了异常,它的返回值就是never

前端Typescript - 也许你还不知道的几个新特性

前端Typescript - 也许你还不知道的几个新特性

前端Typescript - 也许你还不知道的几个新特性

不结束的函数返回never

上面三种情况都可能会返回never

最后,联合类型判断了所有情况后,剩下的就是never

前端Typescript - 也许你还不知道的几个新特性

使用as const推断

前端Typescript - 也许你还不知道的几个新特性

前端Typescript - 也许你还不知道的几个新特性

可以看到,如果具体值,跟写前面没什么区别,都会变成具体类型,而不会将类型扩大化,比如下面,类型只可能是John而不会变成string

const username = 'John' as const; // type 'John'

对象做这种推断,会得到一堆readonly属性

数组做这推断,会得到readonly的元组

另外,const可以帮助我们把字符串数组变成联合类型

前端Typescript - 也许你还不知道的几个新特性

Override关键字

学过静态语言的小伙伴对这个应该不陌生,它可以告诉你子类方法覆盖了父类方法。

前端Typescript - 也许你还不知道的几个新特性

这是个新特性,你可能还用老的办法进行覆盖,但强烈建议把编译开关关掉,这样代码更安全noImplicitOverride: true

静态代码块 static block

前端Typescript - 也许你还不知道的几个新特性

很像静态构造函数,可以让你初始化一些静态字段

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章