Avatar ·

TypeScript中“as const”的含义及何时使用?

大家好!我最近开始学习TypeScript,遇到了`as const`这个结构。老实说,我不太明白它的作用以及为什么需要它。 以下是我在文档中找到的一个例子: ```typescript const colors = ['red', 'green', 'blue'] as const; ``` 我理解`as`用于类型断言(type assertion),例如`someValue as string`。但在`as`后面加上`const`是什么意思?这与简单声明数组或对象有何不同? 我尝试写了这样的代码: ```typescript const fruits = ['apple', 'banana']; const fruitsConst = ['apple', 'banana'] as const; // fruits和fruitsConst有什么区别? // 为什么我不能修改fruitsConst? ``` 我还注意到,当我对对象使用`as const`时,TypeScript开始严格检查属性的值。例如,如果我写: ```typescript const config = { mode: 'development' as const, port: 3000 }; ``` 那么TypeScript不允许我修改`mode`的值。