Tengo esta interfaz de ejemplo:
interface Input { api_method: string; ip: string; utc_millis: number; user_agent: string; rr_sets: { name: string; rr_type: string; ttl: number; value: string; }[]; }y desea crear automáticamente esta interfaz a partir de ella:
interface Output { api_method: boolean; ip: boolean; utc_millis: boolean; user_agent: boolean; rr_sets: { name: boolean; rr_type: boolean; ttl: boolean; value: boolean; }[]; }De la documentación Aquí descubrí que esto:
type Output= { [Key in keyof Input]: boolean; };creará este tipo:
type Output = { api_method: boolean; ip: boolean; utc_millis: boolean; user_agent: boolean; rr_sets: boolean; }¿Cómo se haría eso con cualquier tipo/interfaz anidado?
Puede usar un condicional en su tipo asignado:
interface Input { api_method: string; ip: string; utc_millis: number; user_agent: string; rr_sets: { name: string; rr_type: string; ttl: number; value: string; }[]; } type AllBoolean<T> = { [K in keyof T]: T[K] extends Array<infer U> ? AllBoolean<U>[] : boolean } type Output = AllBoolean<Input> const output_test: Output = { api_method: true, ip: true, utc_millis: false, user_agent: true, rr_sets: [{ name: true, rr_type: true, ttl: false, value: true, }] }