infer
type Flatten<T> = T extends any[] ? T[number] : T;type Flatten<T> = T extends Array<infer U> ? U : T;示例
type ParamType<T> = T extends (param: infer P) => any ? P : T;interface User {
name: string;
age: number;
}
type Func = (user: User) => void
type Param = ParamType<Func>; // Param = User
type AA = ParamType<string>; // string最后更新于