typescript - ¿Cómo obtener solo arreglos u otro tipo de una interfaz?
Tengo una interfaz así:
interface Car {
model: string;
owners: string[];
}
Y quiero obtener solo las propiedades del arreglo:
type NewCar = OnlyArrays<Car>
Y esto será igual a:
type NewCar = {
owners: string[];
}
Escriba que no es importante, arreglo solo como ejemplo.
He probado este código pero no funciona:
function getCar<T = Car>(id: string): { [P in keyof T]: T[P] extends array ? string[] : string; };
Respuesta #1
Puedes declarar un tipo mapeado y volver a asignar las claves (docs) para incluir solo aquellas claves cuyo valor extienda un arreglo:
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[] }
Área de juego de TypeScript
