6、类型

6.1、Type Inference 类型推论

可以推断出我们赋值的过程中这个变量应该是个什么类型

let str = 'str'

str = 123 // => 会报错 type inference 会在我们没有明确类型的时候推测出一个类型

 

6.2、Union Types 联合类型

顾名思义 可以给一个变量 赋予两种数据类型

let numberOrString: number | string

numberOrString = 'Gavin'

numberOrString = 22

// 同时 该变量可访问两种类型共有属性和方法

numberOrString.toString()

numberOrString.valueOf()

 

6.3、As 类型断言

当使用联合类型时 访问其中一种类型的属性和方法时 会报错 所以这种情况就会使用到 类型断言

// as 类型断言 可以把联合类型中的不确定类型 转换成确定类型并使用该类型的属性和方法

function getLength (input: String | number): number {

// 把 str 指定为 String类型

const str = input as string

if (str.length) {

return str.length

} else {

const number = input as number

return number.toString().length

}

}

注意类型断言不是类型的转换 把它断言成一个联合类型中不存在的类型时会出现问题

这样的问题可以使用TypeScript中的一个特性type guard 当遇到联合类型的时候使用条件语句可以自动帮助我们缩小条件类型的范围

function getLength (input: String | number): number {

// 如果类型为String的话直接取input的length

if (typeof input == 'String') {

return input.length

// 否则就把类型转换为String再取input的length

} else {

return input.toString().length

}

}

posted @   史小坑  阅读(53)  评论(0编辑  收藏  举报
编辑推荐:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
点击右上角即可分享
微信分享提示