Как использовать различение типов объектов в TypeScript?

#javascript #typescript #visual-studio #typescript-typings #type-systems

#javascript #typescript #visual-studio #typescript-типизации #системы типов

Вопрос:

Как различать разные типы объектов в TypeScript?

 

interface CC {
    a: number;
    b: string
}

interface B {
    c:number
}



const obj:  CC |  B = {
    a: 1,
    c: 1
} 
// valid
 

Я хочу, чтобы объект действителен только тогда, когда

 {
  a:number,
  b:string
}
 

или

 {
  c:number
}
 

не то, какой тип объединения или тип пересечения ведут себя.

Ответ №1:

Один из способов заставить typescript выбрать либо B или CC — установить общую переменную с определенным значением.

Пример :

 type CC = {
    type: 1;
    a: number;
    b: string
};

type B = {
    type: 2;
    c: number
};

const obj: CC | B = {
    type: 1,
    a: 1,
    c: 1
};
 

введите описание изображения здесь