TypeScript 类型体操实战笔记
条件类型
条件类型是 TypeScript 类型编程的基础,语法类似三元表达式:
type IsString<T> = T extends string ? true : false;
type A = IsString<'hello'>; // true
type B = IsString<42>; // false
映射类型
映射类型可以基于已有类型创建新类型:
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
模板字面量类型
TypeScript 4.1 引入的模板字面量类型,让类型层面的字符串操作成为可能:
type EventName<T extends string> = `on${Capitalize<T>}`;
type ClickEvent = EventName<'click'>; // 'onClick'
实战:类型安全的事件系统
结合以上技巧,可以构建一个完全类型安全的事件系统,确保事件名和回调参数类型一一对应。