【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() // 不会报错
}
相关推荐
程序员爱钓鱼6 分钟前
Rust String 与 &str 详解:字符串所有权、借用与转换
前端·后端·rust
码农学院11 分钟前
GEO与SEO协同:从传统搜索到生成式搜索的平滑迁移路径
服务器·前端·python
咩咩啃树皮9 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
阳光是sunny9 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
触底反弹9 小时前
一文搞懂 Tailwind CSS 弹性布局:从原理到实战
前端·css·html
阳光是sunny9 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
小林ixn9 小时前
从 ??= 到 onKeyDown:一个 React 组件的“自我修养”
前端·javascript·react.js
REDcker10 小时前
显示分辨率标准对照详解
前端·网络·分辨率·显示·屏幕
এ慕ོ冬℘゜10 小时前
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)
前端·javascript·jquery
武子康10 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端