如何从接口中只获取数组或其他类型?
How to get only arrays or another type from interface?
我有这样的界面:
interface Car {
model: string;
owners: string[];
}
我只想获取数组属性:
type NewCar = OnlyArrays<Car>
这将等于:
type NewCar = {
owners: string[];
}
类型不重要,例如数组。
我试过这段代码,但它不起作用:
function getCar<T = Car>(id: string): { [P in keyof T]: T[P] extends array ? string[] : string; };
您可以声明映射类型并重新映射键 (docs) 以仅包含值扩展数组的那些键:
type OnlyArrays<T> = {
[K in keyof T as T[K] extends Array<infer _> ? K : never]: T[K]
}
type NewCar = OnlyArrays<Car>
// type NewCar = { owners: string[] }
我有这样的界面:
interface Car {
model: string;
owners: string[];
}
我只想获取数组属性:
type NewCar = OnlyArrays<Car>
这将等于:
type NewCar = {
owners: string[];
}
类型不重要,例如数组。
我试过这段代码,但它不起作用:
function getCar<T = Car>(id: string): { [P in keyof T]: T[P] extends array ? string[] : string; };
您可以声明映射类型并重新映射键 (docs) 以仅包含值扩展数组的那些键:
type OnlyArrays<T> = {
[K in keyof T as T[K] extends Array<infer _> ? K : never]: T[K]
}
type NewCar = OnlyArrays<Car>
// type NewCar = { owners: string[] }