【发布时间】:2018-09-02 15:42:21
【问题描述】:
给定以下代码:
/* @flow */
interface IDefaultSettings {
Drivers?: {},
Options?: {}
}
const defaultSettings: IDefaultSettings = {
Drivers: {},
Options: {}
}
const settings: IDefaultSettings = {};
mergeSettings(settings);
function mergeSettings(settings: IDefaultSettings) {
for (const [key, setting] of Object.entries(defaultSettings)) {
switch(key) {
case 'Drivers':
case 'Options':
settings[key] = setting;
break;
}
}
}
将上面的代码放在Flow playgound 中尝试一下。
我收到此 lint 错误,无法解决:"Cannot assign `setting` to `settings[key]` because an indexer property is missing in `IDefaultSettings` [1]."
为什么key 的使用需要接口中的索引器道具IDefaultSettings,当这段代码从具有已知接口的对象中提取key 时——我的意思是,key 还能是什么?两个对象 defaultSettings 和 settings 具有相同的类型/结构 IDefaultSettings。
请帮忙,谢谢!
【问题讨论】:
标签: flowtype