#Ts篇:类型断言!&any unkown void never & 泛型

类型断言

type T = 'a'|'b'|'c';

let foo = 'a';
let bar:T = foo as T; // 正确

上面示例中,最后一行的foo as T表示告诉编译器,变量foo的类型断言为T,所以这一行不再需要类型推断了,编译器直接把foo的类型当作T,就不会报错了。

any unknown void never

any 关闭类型校验 变量赋值污染问题

unknown是any的严格版。
unknown 类型表示一个值的类型是未知的,但与 any 不同,unknown 类型的值不能被读取,除非先进行类型检查。

let value: unknown;
value = 10;       // 合法
value = "Hello";  // 合法
// 无法直接操作 unknown 类型的值
console.log(value.toUpperCase());  // 错误: Object is of type 'unknown'.
// 需要进行类型检查
if (typeof value === "string") {
  console.log(value.toUpperCase());  // 合法
}

void 函数没有返回值,如果有返回值就报错。

never let x: never; 变量x的类型是never,就不可能赋给它任何值,否则都会报错。

Void:适用于那些不打算返回任何数据给调用者的函数。这类函数往往侧重于执行某些副作用(如修改状态、触发事件等),而不是计算结果。因此,当你只需要一个函数来执行任务而不关心其输出时,void 就是一个合适的选择。
Never:适合用于那些理论上不应该返回的函数,比如因为发生了致命错误而需要立即停止程序运行的场景。另外,在编写类型安全的代码时,never 可以作为一种工具来增强逻辑的一致性和严谨性,确保某些特定条件下代码路径确实不会被执行。

泛型

带有类型参数

function getFirst<T>(arr: T[]): T {
  return arr[0];
}

函数名getFirst后面的尖括号就是类型参数

上例的函数getFirst()的参数类型是T[],返回值类型是T,就清楚地表示了两者之间的关系。比如,输入的参数类型是number[],那么 T 的值就是number,因此返回值类型也是number。

函数调用时,需要提供类型参数。

getFirst([1, 2, 3]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值