【TS】any的问题及与unknown的区别

any的使用场景

一旦设置为any,类型检查系统会认为这个值不需要检查,一般用于

1.出于特殊原因,需要关闭某些值的类型检查

2.为了适配老旧的js项目,快速迁移到ts,可以把代码设置为any,因为对于老旧js项目很难做到给每个值都加上类型定义

any带来的问题

js 复制代码
let a:any = 'string'
let b:number = a //可以赋值不会报错

b.toFixed()  // 报错

由于any类型可以赋值给任何类型,所以会污染其他变量,像以上案例,运行时才会爆出错误

unknown

和any类型类似,如果设置为unknown,可以赋值任何值,和any区别:

1.unknown类型的变量,只能赋值给any和unknown类型的变量,赋值给其他类型报错

js 复制代码
let a:unknown = 'string'

let b:number = a //报错
let c:any = a // 不报错

2.unknown类型的变量不能直接使用变量上的方法和属性

js 复制代码
let a:unknown = 'string'
a.trim() // 报错
//如果想不报错,可以这么写
if(typeof a === 'string') {
    a.trim() // 不会报错
}
相关推荐
dagouaofei2 小时前
手术室护理年终PPT怎么做?
前端·python·html·powerpoint
技术爬爬虾2 小时前
为什么React的漏洞能攻破服务器?Next.js与RSC入门基础
前端·数据库·安全
JS_GGbond2 小时前
浏览器三大核心API:LocalStorage、Fetch API、History API详解
前端·javascript
老前端的功夫2 小时前
首屏优化深度解析:从加载性能到用户体验的全面优化
前端·javascript·vue.js·架构·前端框架·ux
申阳2 小时前
Day 22:SpringBoot4 + Tauri 2.0(VUE) 登录功能前后端联调
前端·后端·程序员
晴殇i2 小时前
性能飞跃!这几个现代浏览器API让页面加载速度提升至90+
前端·javascript·面试
孟祥_成都2 小时前
nest.js / hono.js 一起学!开发前必备!
前端·node.js
Hilaku2 小时前
检测开发者工具是否打开?这几种方法让黑客无处遁形🤣
前端·javascript·前端框架
qq_316837752 小时前
uniapp 缓存指定接口的响应,在无网络时使用缓存数据
前端·uni-app