typescript中any与unknown的区别

在typescript中有两种顶级类型(any 与 unknown),那它们两者之间有什么区别呢?

1.任何类型都可以是any类型,any类型就相当于是免检标签,给了开发者很大的自由,typescript允许any类型的值进行任何操作,对它一路绿灯。
let score: any = 87.5;
let num = Math.round(score); // ok
2.任何类型也都可以是unknown类型,但与any完全相反,unknown类型就像是typescript给打上了一个重点检查的标签。在没有对它进行类型检查之前,ubnknow类型的变量是不能进行任何操作的。
let score: unknown = 87.5;
let num = Math.round(score); //error 

那如何使unknown类型能正常使用呢?

1.很简单,就是让typscript编译器"看到"并且"相信"你的操作是合法安全的。
如下:
let score: unknown = 87.5;
if(typeof score === "number") {
  let num = Math.round(score); // ok
}
2.断言
let score: unknown = 87.5;
let num = Math.round(score as number);
# 或
let num = Math.Round(<number>score);
任意类型的值都是可以复制给any与unknown二者, any 会绕过类型检查,直接可用,而 unkonwn 则必须要在判断完它是什么类型之后才能继续用,any 就是个自行车辅助轮, 习惯了 TS 的强类型检查规则应该尽快扔掉使用类型更安全的 unkown。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容