我有三种类型InputOptionPanel, SelectOptionPanel, CalcOptionPanel:
的共同类型OptionPanel
export interface InputOptionPanelBase {
_id: Types.ObjectId;
required: boolean;
value: string;
group: string;
title: string;
optionGroup_id: string | undefined;
position: number;
editable: boolean;
description?: string | null;
}
type InputOptionPanel = InputOptionPanelBase & { type: 'input' };
type SelectOptionPanel = InputOptionPanelBase & { type: 'select'; list: ISelectListItem[] };
type CalcOptionPanel = InputOptionPanelBase & { type: 'calc'; calc: Calc };
export type OptionPanel = InputOptionPanel | SelectOptionPanel | CalcOptionPanel;
Why does an error occur when declaring an object?
第一个错误const newOption: OptionPanel
-属性"calc"在选项面板类型中缺失,并且在CalcOptionPanel类型中是必需的
二误差
newOption.list = optionLists[option_id].map((listItem_id) => {
const listItemDB = list.find((listItem) => listItem._id === listItem_id)!;
return {
title: getTextFromTitle(listItemDB.title),
value: listItem_id,
_id: listItem_id,
};
});
属性"list"不存在于类型"OpttionPanel"上. 类型"InputOptionPanel"上不存在属性"list".
我不明白如果我有通用类型,为什么会出现这些错误?这可能是三种类型之一.
export type OptionPanel = InputOptionPanel | SelectOptionPanel | CalcOptionPanel;
在第一个错误中,InputOptionPanel和SelectOptionPanel类型中缺少"calc"属性. 在第二个错误中,InputOptionPanel和CalcOptionPanel类型中缺少属性"list"
在我看来,这个错误是由于以下类型创建造成的:
type InputOptionPanel = InputOptionPanelBase & { type: 'input' };
type SelectOptionPanel = InputOptionPanelBase & { type: 'select'; list: ISelectListItem[] };
type CalcOptionPanel = InputOptionPanelBase & { type: 'calc'; calc: Calc };