TypeScript学习笔记之类型推论和类型别名

基础

TypeScript里,在有些没有明确指出类型的地方,类型推论会帮助提供类型

let x = 3;

变量x的类型被推断为数字。 这种推断发生在初始化变量和成员,设置默认参数值和决定函数返回值时。

大多数情况下,类型推论是直截了当地。

最佳通用类型

当需要从几个表达式中推断类型时候,会使用这些表达式的类型来推断出一个最合适的通用类型。例如,

let x = [0, 1, null];

为了推断x的类型,我们必须考虑所有元素的类型。 这里有两种选择: number和null。 计算通用类型算法会考虑所有的候选类型,并给出一个兼容所有候选类型的类型。

类型别名

type 关键字(可以给一个类型定义一个名字)多用于复合类型

type str = string
let s:str = "zl"
console.log(s);

定义函数别名

type f = () => number
let s: f = () => {
  return 2
}
console.log(s());

定义联合类型别名

type str = string | number;
let a: str = '1';
let b: str = 2;

定义值的别名

type value = number | '1' | true;
let a: value = 1;
let b: value = '1';
let c: value = true;
let d: value = false; // 错误,s只能为number '1' true三者中的一个

type和interface还是一些区别的,虽然都可以定义类型

  • interface可以继承, type只能通过&交叉类型合并
  • type 可以定义联合类型和可以使用一些操作,interface不行
  • interface遇到重名的会合并,type 不行

type高级用法

左边的值会作为右边值的子类型,遵循图中上下的包含关系

// extends包含
type a = 1 extends number ? 1 : 0 //1
 
type a = 1 extends Number ? 1 : 0 //1
 
type a = 1 extends Object ? 1 : 0 //1
 
type a = 1 extends any ? 1 : 0 //1
 
type a = 1 extends unknow ? 1 : 0 //1
 
type a = 1 extends never ? 1 : 0 //0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值