我正在使用angular-gridster2,它具有GridsterConfig接口:
export interface GridsterConfig {
fixedColWidth?: number;
fixedRowHeight?: number;
...
[propName: string]: any;
}
问题是,propName允许添加或引用任何属性,从而使编译器忽略错别字。这样编译就可以了:
let foo: GridsterConfig = {};
foo.doesnotexist = "OOPS";
我知道我可以使用Pick创建一个新界面:
type MyGridsterConfig1 = Pick<GridsterConfig, 'fixedColWidth' | 'fixedRowHeight'>;
let mgc1: MyGridsterConfig1 = {};
mgc1.doesnotexist = 100; // <-- compiler error
并且可以在显式属性上使用Omit,但是我还没有找到一种有效的方法:
Omit<GridsterConfig, '[propName: string]'>.
到目前为止,我发现的唯一一件事就是选择所有属性(有许多属性)。 有更好的方法吗?