文章
分享一些技术文章和开发经验,记录学习和成长的过程。
分享一些技术文章和开发经验,记录学习和成长的过程。
TypeScript 的类型系统非常强大,但很多人只用了最基础的部分。这篇文章分享几个实用技巧。
const COLORS = ["red", "green", "blue"] as const;
type Color = (typeof COLORS)[number]; // "red" | "green" | "blue"
as const 是关键——它让 TypeScript 把数组推断为字面量元组而非 string[]。
type PromiseValue<T> = T extends Promise<infer V> ? V : never;
type Result = PromiseValue<Promise<string>>; // string
infer 关键字可以在条件类型中"提取"类型参数,非常灵活。
type EventName<T extends string> = `on${Capitalize<T>}`;
type ClickEvent = EventName<"click">; // "onClick"
配合内置的 Capitalize、Uncapitalize、Uppercase、Lowercase 可以做很多字符串变换。
类型体操不是为了炫技,而是在合适的场景下让类型系统帮你减少运行时错误。记住:好的类型设计应该让错误的代码编译不过,而不是让正确的代码写法别扭。