Avatar ·

TypeScript中的"as const"是什么意思以及它的用途是什么?

大家好!我开始学习TypeScript,遇到了`as const`这个构造。我明白它和类型断言有关,但还没完全搞懂。 下面是一个让我困惑的例子: ```typescript const colors = ['red', 'green', 'blue'] as const; // typeof colors -> readonly ["red", "green", "blue"] const myColor = 'red' as const; // typeof myColor -> "red" (字面量类型,而不是string) const config = { api: 'https://api.example.com', port: 3000 } as const; // typeof config -> { readonly api: "https://api.example.com"; readonly port: 3000 } ``` 我看到类型变了,但我不明白: 1. 为什么简单的`const colors = ['red', 'green', 'blue']`会给出类型`string[]`,而加上`as const`后却变成了包含具体字面量的元组? 2. 如果变量已经通过`const`声明,为什么还需要指定`as const`?难道`const`不是让值不可变吗? 3. 这在哪些实际场景中会有用?我看到在Redux actions中使用过,