Búsqueda de sitios web

¿Admite TypeScript una interfaz extraída excluyendo las propiedades de otra interfaz?


Me pregunto si tiene alguna de las siguientes características. Intenté buscar en Google, pero no pude averiguarlo. ¡Gracias!

interface Numbers {
    number: number;
    number2: number;
    number3: number;
}

const numbers:Numbers - { number3 } = {
    number: 1,
    number2: 2
};

Respuesta #1

Editar

A partir de Typescript 3.5, Omit forma parte de los tipos predefinidos con los que viene Typescript.

Respuesta original

Puedes hacer esto en 2.8 usando el nuevo tipo condicional Exclude y el tipo mapeado Pick

type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; 

interface Numbers {
    number: number;
    number2: number;
    number3: number;
}

const numbers:Omit<Numbers, 'number3'> = {
    number: 1,
    number2: 2
};

Antes de la versión 2.8, Omit podía definirse así:

type Diff<T extends string, U extends string> = ({[P in T]: P } & {[P in U]: never } & { [x: string]: never })[T];  
type Omit<T, K extends keyof T> = Pick<T, Diff<keyof T, K>>;