Javascript 如何在TypeScript中区分不同的对象类型?

Javascript 如何在TypeScript中区分不同的对象类型?,javascript,typescript,visual-studio,typescript-typings,type-systems,Javascript,Typescript,Visual Studio,Typescript Typings,Type Systems,如何在TypeScript中区分不同的对象类型 interface CC { a: number; b: string } interface B { c:number } const obj: CC | B = { a: 1, c: 1 } // valid 我希望obj仅在以下情况下有效 { a:number, b:string } 或 不是联合类型或交叉类型的行为。强制typescript选择B或CC的一种方法是使用特定

如何在TypeScript中区分不同的对象类型



interface CC {
    a: number;
    b: string
}

interface B {
    c:number
}



const obj:  CC |  B = {
    a: 1,
    c: 1
} 
// valid
我希望obj仅在以下情况下有效

{
  a:number,
  b:string
}


不是联合类型或交叉类型的行为。

强制typescript选择
B
CC
的一种方法是使用特定值设置公共变量

:


强制typescript选择
B
CC
的一种方法是使用特定值设置公共变量

:

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

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

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