typescript_条件类型

1. 条件类型, 根据类型的赋值情况,来决定是那个类型

如果T 可以被赋值给 U ,那么就是x , 否则就是y
T extends U ? x : y

1. 映射类型
可以将某个类型接口的类型,进行拷贝,拷贝时,可以做一些转换

type TypeName<T> =
    T extends string ? "string" :
    T extends number ? "number" :
    T extends boolean ? "boolean" :
    T extends undefined ? "undefined" :
    T extends Function ? "function" :
    "boject";

type T1 = TypeName<string>;//type T1 = "string"
type T2 = TypeName<string[]>;//type T2 = "boject"
//三步式条件类型
// ( A | B) extends U ? x : y
// 会自动拆分成
// ( A extends U ? x : y |   B extends U ? x : y )

type T3 = TypeName<string | string[]>; //type T3 = "string" | "boject"

1.2 重点

type Diff<T , U> = T extends U ? never : T;
type T4 = Diff< "a" | "b" | "c" , "a" | "e">;//type T4 = "b" | "c"
//推断流程
// Diff<"a" , , "a" | "e"> |  Diff<"b" , , "a" | "e"> | Diff<"c" , , "a" | "e">
// never | b | c
// b | c
//升级Diff,过滤undefined和null
type NotNull<T> = Diff<T, undefined | null>;
type T5  = NotNull<string | number | undefined | null>;//type T5 = string | number
//其实ts内置的有现有的方法
//ExcLude<T , U>;类似于Diff
//NonNullable<T>;类似于NotNull
//Extract<T , U>;与Diff相反,取共同的值
type T6 = Extract<"a" | "b" | "c" , "a" | "e">;//type T6 = "a"

//ReturnType<T>
//返回值的类型
type T7 = ReturnType< () => string>;//type T7 = string
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值