【Typescript进阶】条件类型 (全面,多实例)
在TypeScript中,你可以使用条件类型来创建复杂的类型映射。这里是一个简单的例子,它展示了如何根据一个值是否为undefined
来改变类型:
type IfUndefined<T, Then, Else = T> = undefined extends T ? Then : Else;
// 使用示例
type A = IfUndefined<number, string>; // A 类型为 number
type B = IfUndefined<undefined, string>; // B 类型为 string
type C = IfUndefined<number | undefined, string>; // C 类型为 string
在这个例子中,IfUndefined
是一个条件类型,它接受三个类型参数T
,Then
和Else
。如果T
是undefined
的子类型,则类型为Then
,否则类型为Else
,默认为T
。
这是一个更复杂的例子,它根据数组中是否有undefined
来改变类型:
type IfArrayHasUndefined<T, Then, Else = T> = T extends Array<infer U> ? (U extends undefined ? Then : Else) : Else;
// 使用示例
type D = IfArrayHasUndefined<number[], string, number[]>; // D 类型为 number[]
type E = IfArrayHasUndefined<(number | undefined)[], string, number[]>; // E 类型为 string
在这个例子中,IfArrayHasUndefined
检查数组中的每个元素是否为undefined
。如果有任何一个元素是undefined
,则类型为Then
,否则为Else
,默认为T
。
评论已关闭