TypeScript的新类型(二):unknown

定义

unknown的含义是:未知类型,适⽤于起初不确定数据的具体类型,要后期才能确定。可以理解为类型安全的any

  • unknown类型的变量可以 赋值给本身 任意类型的值
  • unknown类型的变量 不可以 赋值给任意类型(unknown除外)其他变量不能将类型"unknown"分配给类型"string"
  • unknown类型的变量 不可以 读取任意属性和方法(包括字面量为对象时读取对象内已有属性的情况),"x"的类型为"未知"
ts 复制代码
let x: unknown
x = 123
x = 'hello'
x = true
// unknown类型的变量【不可以】赋值给【任意类型(unknown除外)】的【其他变量】
let str: string
x = 'hi'
str = x // 报错:不能将类型"unknown"分配给类型"string"
let y: unknown
y = x // unknown类型的变量可以赋值给其他unknown类型的变量
// unknown类型的变量【不可以】读取【任意属性和方法】(包括字面量为对象时读取对象内已有属性的情况)
x = 'hello'
x.toUpperCase() // 报错:"x"的类型为"未知"
x.abc // 报错:"x"的类型为"未知"
x = {age: 18}
x.age // 报错:"x"的类型为"未知",(包括字面量为对象时读取对象内已有属性的情况)

如何把unknow赋值给其他数据类型

if判断

  • 加入if判断让ts放心可以继续执行
ts 复制代码
let x: unknown
let y: string
x = 'hellow'
if(typeof x === 'string'){
    y = x;
}

断言

  • 用断言告诉ts这个是什么数据类型
  • x as string断言的第一种写法
  • <string>x断言的第二种写法
ts 复制代码
let x: unknown
let y: string
x = 'hellow'
y = x as string // 断言的第一种写法
y = <string>x // 断言的第二种写法
相关推荐
子兮曰6 小时前
OpenClaw入门:从零开始搭建你的私有化AI助手
前端·架构·github
Victor3566 小时前
https://editor.csdn.net/md/?articleId=139321571&spm=1011.2415.3001.9698
后端
吴仰晖6 小时前
使用github copliot chat的源码学习之Chromium Compositor
前端
1024小神6 小时前
github发布pages的几种状态记录
前端
Victor3566 小时前
Hibernate(89)如何在压力测试中使用Hibernate?
后端
灰子学技术8 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
阿蒙Amon8 小时前
TypeScript学习-第10章:模块与命名空间
学习·ubuntu·typescript
不像程序员的程序媛8 小时前
Nginx日志切分
服务器·前端·nginx
北原_春希8 小时前
如何在Vue3项目中引入并使用Echarts图表
前端·javascript·echarts
尽意啊8 小时前
echarts树图动态添加子节点
前端·javascript·echarts