我在打字稿3.9.7中遇到了以下问题。给定以下代码:
type A = {
type: string;
cellRendererParams: any;
filter: string;
};
type C = {
type: 'yy';
cellRendererParams: {
test: any;
};
};
type Combined = A | C;
const u: Combined = {
type: 'yy',
cellRendererParams: { test: 'asd'}
};
我希望打字稿会抱怨
cellRendererParams
但事实并非如此。我认为这是因为它能够回落到
A
类型。我可以把类型改成
type A = {
type: string;
cellRendererParams: never;
filter: string;
};
它会起作用,但我仍然想给用户留下一个创建A并指定的选项
cellRendererParams
不幸的是,这永远无法阻止。此外,我能够使用
filter
出于某种原因的财产。
有一个简单的解决方案吗?
Playground