【Typescript进阶】条件类型 (全面,多实例)
warning:
这篇文章距离上次修改已过435天,其中的内容可能已经有所变动。
在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。
评论已关闭