此问题已在此处有答案:
Why does A | B allow a combination of both, and how can I prevent it?(3个答案)
昨天关门了。
这可能是重复的,但我找不到答案。
我有这种类型:
type A = {
prop2: string;
prop1: string;
} | {
prop3: string;
prop1: string;
}
正如你所看到的,它有一个共享的 prop 和两个不同的 prop 。但是我可以这样使用它:
const a: A = {
prop1: '',
prop2: '',
prop3: '',
};
而且它起作用了!
但是接下来我需要检查a是否有prop 2和prop 3来使用它:
a.prop1 = '';
// @ts-expect-error
a.prop2 = ''; // ERROR
if ('prop2' in a) {
a.prop2 = ''; // OK
}
为什么typescript允许我声明两个props?我希望它和使用变量时一样严格。最初的例子是一个React组件,它让我传递所有的props。
顺便说一句,我不能添加一个prop 4,只有1,2和3。
1条答案
按热度按时间kgqe7b3p1#
在2023年,这仍然是一个相关的问题,没有一个真实的可以接受的答案,不需要一些复杂的工作。This one by jcalz应该可以帮助您。