Búsqueda de sitios web

Usa una propiedad de una interfaz de Typescript en otra interfaz


Supongamos que tengo una interfaz de Typescript como la siguiente

export interface IMyObj {
    id: string;
    type: 'AA' | 'AZ' | 'XY';
    ...
}

Ahora necesito otra interfaz que también tenga ese campo type

export interface IMyOtherObj {
    ...
    type: 'AA' | 'AZ' | 'XY';
    ...
}

Como puedes ver, he duplicado los valores de type. Entonces, mi pregunta es, ¿cómo puedo reutilizar IMyObj.type en mi interfaz IMyOtherObj? Intenté esto

export interface IMyOtherObj {
    ...
    type: IMyObj.type; // -> error
    ...
}

Creo que estoy cerca, pero hasta ahora no he tenido suerte, ¿alguna sugerencia?

Respuesta #1

Tu problema es que el sistema de tipos de TS no tiene acceso a la propiedad ., sino tipo de propiedad indexada, cambia una cosa en tu definición de tipo:

type: IMyObj['type']

Respuesta #2

Define una enumeración para su propiedad type, como

enum MyEnum {
    Aa = "AA",
    Az = "AZ",
    Xy = "XY"
}

y úsalo así;

export interface IMyObj {
    id: string;
    type: MyEnum;
}

Artículos relacionados