【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() // 不会报错
}
相关推荐
仿生狮子4 小时前
OpenAI 攻下千禧年难题之后,开发者似乎无动于衷
前端·数学·vibecoding
Lvan的前端笔记7 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
三天不学习7 小时前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
xcs194058 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
明月_清风9 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
Csvn10 小时前
框架性能优化
前端
回眸&啤酒鸭12 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
用户693717500138412 小时前
2026,程序员的时代拐点到了
android·前端·后端
大龄秃头程序员12 小时前
一次 iBeacon + BLE 无感解锁方案的实现记录
前端
小兔子12 小时前
Python 的 GIL 与 free-threading:3.13 之后「去 GIL」走到哪一步了
前端