TypeScript 进阶:类型体操与实战技巧
用条件类型与分布式条件类型可以写出强大的工具类型,提升工程可维护性。
关键模式
// 分布式条件类型示例
type NonNullableKeys<T> = {
[K in keyof T as undefined extends T[K] ? never : K]: T[K]
}
type Result = NonNullableKeys<{ a: string | undefined; b: number; c?: boolean }>;
// Result => { b: number }
// 函数参数提取
type ArgumentType<F> = F extends (arg: infer A) => any ? A : never;
const fn = (x: { id: string }) => x.id;
type A = ArgumentType<typeof fn>;
// A => { id: string }
satisfies 的好处
在对象字面量上使用 satisfies 可保留更精确的类型信息并进行约束校验。