Avatar ·

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 获取数据,我终究还是需要