六、类型断言、类型推断、类型收窄

类型断言

你清楚地知道一个实体的类型。它没有运行时的影响,只是在编译阶段起作用。

形式:

  • 尖括号”语法

    let someValue: any = "this is a string";
    
    let strLength: number = (<string>someValue).length;
    
  • as语法:

    let someValue: any = "this is a string";
    
    let strLength: number = (someValue as string).length;
    

两种形式是等价的,当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。

类型推断

具体的对象属性,ts会自动类型推断(假设推断为string)。

但如果使用这个属性的位置设定为其他类型(假设为字符串字面量类型),这样就会产生类型冲突。

var req = {
  url: 'http://',
  method: 'GET'
};

function handleRequest(url: string, method: 'GET' | 'POST'): void{

}

handleRequest(req.url, req.method);//类型“string”的参数不能赋给类型“"GET" | "POST"”的参数。
  • 字面量推断as const指定类型为字面量类型。
var req = {
  url: 'http://',
  method: 'GET'
} as const;

function handleRequest(url: string, method: 'GET' | 'POST'): void{}

handleRequest(req.url, req.method );

字面量类型与字面量推断

类型:

interface class enum
object	/	具体对象字面量类型
number	/	具体数字字面量类型
boolean /	具体布尔字面量类型
string	/	具体字符串字面量类型
array[]  Array<T>	具体数组字面量类型
symbol				bigint字面量类型

值:

class enum objet  具体数字, 布尔值, 字符串值
function 具体array
sumbol()的具体值 	bigint具体值

案例未写出:需要再写

类型收窄

  • typeof类型收窄:限制当前类型。(if语句中使用)

与js中语义相同,返回指定类型的字符串。

  • 真值收窄:通过布尔判断的方式实现类型收窄
  • 等值收窄
  • in操作符收窄:通过对象中是否有指定属性来实现类型收窄。
  • instanceof操作符收窄:对象是否来自指定构造函数。
  • 赋值收窄:通过赋值语句实现类型收窄。

案例未记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值