从接口中删除TypeScript可索引类型

时间:2020-03-20 16:27:44

标签: typescript

我正在使用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]'>.  

到目前为止,我发现的唯一一件事就是选择所有属性(有许多属性)。 有更好的方法吗?

0 个答案:

没有答案