TypeScript 类型映射的妙用:

看注释:



//==========================
// 知识点:映射类型
class People {
    name: string;
    age: number;
    height: number;
    address: string;
}

// 用途:
// 1、可空类型的定义: 
// 按照下方这样创建一个People的实例的话,类的每个属性都可以返回空.
type Nullable<T> = {[P in keyof T]: T[P] | null }
const pNum: Nullable<People> = new People();

//如果设定name的属性,那么pNum这个对象的所有属性都为空,但是定义类的时候,并不需要设定为 props?:number这样,而且不会报错.
// 并且,给每个属性赋值为null也不会报错,真是奇了怪了...
pNum.name = "terry";
pNum.age = null;
console.log(pNum.name); //"terry"
console.log(pNum.height); //undifined.

// 2、
type Partial<T> = {[P in keyof T]?: T[P]}
const pp: Partial<People> = new People();
pp.age = 27;
// pp.height = null;  //这样赋值,就会报错。
pp.address = "home";

console.log(pp.address);

// 看看这两个不同类型的定义,就是最后面多了一个null的设定,这就是nullable和partial的区别:
// 一个是所有的属性都可以爱怎么复制怎么赋值,包括null,一个是所有的属性,要么不赋值,要么按照规定赋值.
// type Nullable<T> = {[P in keyof T]: T[P] | null }
// type Partial<T> = {[P in keyof T]?: T[P]}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值