/*
any
当需要快速编写代码, 而不关心类型检查时, 可以使用 any 类型
unknown
当你从外部源(如 API 请求、用户输入等)接收数据时, 数据的类型通常是不确定的,
使用 unknown 类型可以确保在使用这些数据之前进行了适当的类型检查
*/
//--- any 可以存储任意类型的值 (类型不安全)
//当声明一个变量为 any 类型时, 编译器不会进行类型检查
let url: any = "dengruicode.com"
console.log(url.toUpperCase()) //toUpperCase 将字符串中的所有小写字母转换为大写字母
//错误示例: 字符串没有 toFixed 方法, 由于是 any 类型, 编译时不会报错, 但运行时会出错
//console.log(url.toFixed(2)) //toFixed 将数字格式化为字符串, 并保留指定的小数位数
//--- unknown 表示一个未知的类型 (类型安全)
//当声明一个变量为 unknown 类型时, 在使用之前需进行类型检查或断言明确其类型
let web: unknown = "www.dengruicode.com"
//错误示例: 编译器不知道 web 是否具有 toUpperCase 方法
//console.log(web.toUpperCase()) //编译报错
//console.log(typeof web) //typeof 用于获取一个变量或表达式的类型
if (typeof web === 'string') {
//此时确定了 web 是 string 类型, 可以调用 toUpperCase() 方法
console.log(web.toUpperCase())
}
//类型断言 告诉编译器一个变量的具体类型, 从而绕过编译器的类型检查
//web as string 将 web 变量断言为 string 类型
//告诉编译器: "我确定 web 是一个字符串类型的变量, 请按照字符串来处理"
console.log((web as string).toUpperCase())
6.any 和 unknown
-- 未经授权禁止转载 --
- 状态: 更新中
- 作者: 邓瑞
- 课时数量: 37 节课
更新中 ...