type | undefined无论null检查如何,都不能赋值给type



在我下面的代码中,我得到一个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
}
});
}

相关内容

  • 没有找到相关文章

最新更新