条件类型是一种在TypeScript中用于根据某些条件选择类型的机制。它允许开发者创建更灵活和动态的类型系统。条件类型的基本语法如下:
T extends U ? X : Y
这里,如果类型T
可以赋值给类型U
,那么结果类型就是X
,否则结果类型就是Y
。
泛型则是TypeScript中的一种参数化类型机制,它允许开发者编写可以在多种类型上工作的代码,而不是单一类型。泛型提供了一种方式来创建可重用的组件,一个组件可以支持多种类型的数据。
类型:
Array<T>
,表示一个元素类型为T
的数组。T extends string ? Array<T> : Array<number>
。应用场景:
常见问题:
解决方法:
// 简单泛型示例
function identity<T>(arg: T): T {
return arg;
}
let output = identity<string>("myString"); // 明确指定泛型参数
console.log(output); // 输出: myString
// 条件类型示例
type TypeName<T> =
T extends string ? "string" :
T extends number ? "number" :
T extends boolean ? "boolean" :
"object";
type T0 = TypeName<string>; // "string"
type T1 = TypeName<"a">; // "string"
type T2 = TypeName<true>; // "boolean"
type T3 = TypeName<() => void>; // "object"
通过上述示例,可以看到泛型和条件类型在TypeScript中的应用,以及如何利用它们来创建灵活且类型安全的代码。
领取专属 10元无门槛券
手把手带您无忧上云