as const

在项目中遇到了一个问题:

image-20210514184232090

这个函数签名简直莫名奇妙

后来发现加上as const

image-20210514184313551

变得顺眼多了

as const究竟是啥?

看一个例子:

1
const a = ["jack", 1, { id: "5" }];

image-20210514184447025

a是一个元素为string或者number或者含有id对象的数组,这明显与我们的预期不符,因为我们想要一个元素为string | number | object的数组,主要原因是ts中的数组里面的类型必须一致,所以他会解析成上面那种情况。

如果我们加上as const呢?

image-20210514184705302

a变成了一个数组,里面第一个元素是’jack’,第二个是1,第三个是对象

as const主要用在数组中,在编写ts代码时,灵活运用as const能解决一些有趣的问题。