unknown vs any: 区别及在 TypeScript 中何时使用
你好!我最近开始学习 TypeScript,遇到了 `any` 和 `unknown` 类型。似乎两者都允许存储任何内容,但我不太明白它们之间的区别以及何时使用哪个。
下面是一个让我困惑的例子。我有一个从 API 获取数据的函数,我不知道具体会收到什么:
```typescript
function processData(data: any) {
console.log(data.toUpperCase()); // 可以工作,但如果 data 不是字符串,运行时就会崩溃
}
```
如果我把 `any` 换成 `unknown`:
```typescript
function processData(data: unknown) {
console.log(data.toUpperCase()); // 编译错误:Object is of type 'unknown'
}
```
结果,使用 `unknown` 代码甚至无法编译。那 `unknown` 有什么用呢?它只会带来麻烦。我听说 `unknown` 被认为更安全,但在实践中我看不到任何优势,只有额外的问题。
另外,我不明白如何正确处理 `unknown`。如果我从 API 获取数据,我终究还是需要