TypeScript 泛型与类型守卫深度解析
泛型和类型守卫让 TypeScript 代码更安全灵活。
1. 泛型基础
function identity<T>(arg: T): T {
return arg;
}
let result = identity<string>('hello');2. 泛型约束
interface Lengthwise {
length: number;
}
function logLength<T extends Lengthwise>(arg: T): T {
console.log(arg.length);
return arg;
}3. 类型守卫
function isString(value: unknown): value is string {
return typeof value === 'string';
}
function process(value: string | number) {
if (isString(value)) {
console.log(value.toUpperCase());
} else {
console.log(value.toFixed(2));
}
}4. 泛型与 keyof
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}泛型和类型守卫是 TypeScript 高级类型系统的核心。
