TS类型(一)

1. 字面量类型

常用方式:

let a: 'male' | 'female';

a = 'male' 

a = 'female'

a = 'hello'  // 报错

这就意味着a只能是male或者female,其他值都不可以。

上例中的竖线|表示联合类型,就像或,可以在列举的类型中选择

let b: string | boolean ;

b = 'hello';

b = true;

2. any

any表示任意类型,在不确定变量的类型可以使用,但不好滴地方就是失去了TS的类型检测功能。

let c: any;

c = 'hello';

c = 22;

c= true;

另外,声明变量而不指定类型,TS会自动判断为any。

3. unknown 未知类型

let d: unknown;

d = 'hello';

d = true;

它与any的区别是,当我们把any类型的变量赋给其他类型并不会报错,

let e: string;

e = c ; // 结合上边,c此时是布尔值,却能赋给字符串类型,把e的类型也给弄乱了。

但是如果是unknown

d = 'hello';

e = d; // 报错,unknown类型不能赋给string类型

此时虽然d的值是字符串,但他的类型是unknown,所以这会报错,也就避免了去扰乱其他类型的变量,可以说unknown是安全的any。我们不能直接对unknown类型直接赋值,但是可以通过下面这种方式来判断赋值。

if (typeof d === "string") {
e = d; // 通过

}

或者我们使用类型断言as,用来告诉TS编译器变量的实际类型。两种写法

  • 变量 as 类型
  • <类型>变量

e = d as string;

// 或者

e = <string>d;

4. void never

这两个类型一般用于函数。

// void:函数没有返回值,返回值为空undefined

function (): void {
console.log('没有返回值')

}
 

// never:函数永远不会返回结果,连空值都没有,例如抛出异常,报出异常意味着程序出现错误,出现错误以后,程序终止也就没有结果了

function(): never {
throw new Error ('报错了!')
}

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值