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中使用过,