TypeScript高级特性详解
泛型编程
泛型是TypeScript最强大的特性之一,它可以让我们编写可重用的、类型安全的代码。
function identity(arg: T): T {
return arg;
}
// 使用泛型接口
interface GenericIdentityFn {
(arg: T): T;
}
// 泛型类
class GenericNumber {
zeroValue: T;
add: (x: T, y: T) => T;
}
高级类型
TypeScript提供了多种高级类型操作符,让类型系统更加灵活。
// 联合类型
type StringOrNumber = string | number;
// 交叉类型
type Combined = { id: number } & { name: string };
// 条件类型
type TypeName = T extends string
? "string"
: T extends number
? "number"
: "object";
类型推断和类型保护
TypeScript的类型推断系统可以帮助我们减少类型注解,同时保持类型安全。
// 类型保护
function isString(value: any): value is string {
return typeof value === "string";
}
// 使用类型保护
function processValue(value: string | number) {
if (isString(value)) {
// 这里的value被推断为string类型
return value.toUpperCase();
}
// 这里的value被推断为number类型
return value.toFixed(2);
}