【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() // 不会报错
}
相关推荐
cz追天之路6 小时前
华为机考 ------ 计算某字符出现次数
前端·javascript·华为机考
毕设源码-朱学姐6 小时前
【开题答辩全过程】以 基于Web酒店管理的设计与实现为例,包含答辩的问题和答案
前端
talenteddriver6 小时前
Java Web:http请求在springboot项目中的传递层级(自用笔记)
java·前端·spring boot·http
咘噜biu6 小时前
Java后端和前端的接口数据加密方案(椭圆曲线集成加密方案)
java·前端·安全·aes·密钥协商ecdh·椭圆曲线集成加密方案
CodeSheep6 小时前
百度又一知名产品,倒下了!
前端·后端·程序员
阿芯爱编程6 小时前
前端面试题linux操作
前端·面试
Bug.ink7 小时前
BUUCTF——WEB(4)
前端·网络安全·靶场·ctf·buuctf
L Jiawen7 小时前
【Web】RESTful风格
前端·后端·restful
momo(激进版)7 小时前
前端打包时自动更新版本号
前端
胖虎17 小时前
UIKit实现一个渐变文字的UILabel(核心思想及实现过程)
前端·mask·渐变文字·ios渐变文字·渐变label