在我下面的代码中,我得到一个Argument of type 'Definition | undefined' is not assignable to parameter of type 'Definition'.
错误。但正如你所看到的,我用if (defs[type] != undefined)
检查对象值。但在this.addDefinition(type, defs[type]);
时,无论如何都会抛出错误。
public static addDefinitions(defs: Record<string, Definition>): void {
Object.keys(defs).forEach((type: string): void => {
if (defs[type] != undefined) {
this.addDefinition(type, defs[type]);
}
});
}
它可能是我的tsconfig中的错误设置吗?
我希望我能给出一个更彻底的答案,但这是TS可能期望的普通Record<string,T>
对象的解决方案。(带着一粒盐:我的猜测是,TS不记录type
作为一个特定的字符串,甚至在同一流中,它会"忘记";它检查了那个键
public static addDefinitions(defs: Record<string, Definition>): void {
Object.keys(defs).forEach((type: string): void => {
const def = defs[type] // fix the value to a variable
if (def) {
this.addDefinition(type, def); // def is defined
}
});
}