TypeScript 类型体操技巧
掌握 TypeScript 高级类型技巧,写出更健壮的代码。
TypeScript 的类型系统非常强大。掌握一些高级技巧可以让代码更加健壮。
条件类型
type IsArray<T> = T extends any[] ? true : false;
type A = IsArray<string[]>; // true
type B = IsArray<string>; // false
映射类型
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
type Optional<T> = {
[P in keyof T]?: T[P];
};
模板字面量类型
type EventName<T extends string> = `on${Capitalize<T>}`;
type ClickEvent = EventName<'click'>; // 'onClick'
分布式条件类型
type ToArray<T> = T extends any ? T[] : never;
type A = ToArray<string | number>; // string[] | number[]
这些技巧在写库和类型安全的 API 时特别有用。