我正在努力改进xlsx
库的输入。我有以下定义:
export interface IWorkSheet {
[cell: string]: IWorkSheetCell;
}
但是,IWorkSheet
的某些键用于不是IWorkSheetCell
的元数据;例如,!merges
是IRange
的数组。因此,我尝试以下定义:
export interface IWorkSheet {
[cell: string]: IWorkSheetCell;
['!merges']?: IRange[];
}
不幸的是,这导致错误“类型为['!merges']
'的属性'IRange[]
'无法分配给IWorkSheetCell类型。”我可以通过将其声明为IWorkSheetCell | any
来解决这个问题,但这会破坏自动完成并且不会真正反映声明的意图。
如何声明对象的默认值类型,然后为特定键覆盖它?
答案 0 :(得分:3)
您不能使用interface
,但使用intersection type:
type IWorkSheet = {
[cell: string]: IWorkSheetCell;
} & {
['!merges']?: IRange[];
}
或者:
interface IWorkSheet {
[cell: string]: IWorkSheetCell;
}
type IWorkSheetMerges = IWorkSheet & { ['!merges']?: IRange[]; }