我想在我的 class 中要求一种或另一种类型的构造函数:
const instance: MyClass = new MyClass({ digit: 5 });
... 要么 ...
const instance: MyClass = new MyClass({ letter: 'x' });
它不能同时是两个,或其他一些对象 .
目前我有这个:
interface MyClassConstructor {
digit?;
letter?;
}
interface MyClassDigit extends MyClassConstructor {
digit: number;
}
interface MyClassLetter extends MyClassConstructor {
letter: string;
}
class MyClass {
constructor(obj: MyClassDigit | MyClassLetter) {
if (obj.digit) {
// ...
} else if (obj.letter) {
// ...
}
}
}
但我不认为这是正确的做法......
2 回答
我不会改变你的解决方案 . 我没有两个属性的基接口 . 我只想使用一个union和一个
in
类型的守卫:如果您有更多参数并且只想要一个成员,则可以使用条件类型自动生成类型:
重载
constructor
:这将确保只接受一个 .