如何使对象x
仅具有A
,B
,C
中的一个属性。当前,它可以具有所有属性a
,b
,c
,我只希望它成为其中一个,而没有另一个。
interface A {
a: string;
}
interface B {
b: string;
}
interface C {
c: string;
}
type X = A | B | C;
const x: X = {
a: 'a',
b: 'b',
c: 'c'
};
console.log(x); // returns { a: "a", b: "b", c: "c" }, should throw error.
打字稿版本-3.8.3
答案 0 :(得分:0)
查看TypeScript文档(here),我不确定使用接口是否可以实现(我很可能错了)。但是我确实设法达到了您使用枚举所寻找的东西。
enum A {
a = 'a'
}
enum B {
b = 'b'
}
enum C {
c = 'c'
}
type X = A | B | C;
const x: X = {
a: 'a',
b: 'b',
c: 'c'
};
/* This does throw an error:
Type '{ a: string; b: string; c: string; }' is not assignable to type 'X'.
Type '{ a: string; b: string; c: string; }' is not assignable to type 'C'.