type LanguageKey =
| 'c++'
| 'python'
| 'javascript'
| 'typescript';
class Test {
languages: Partial<Record<LanguageKey, string>> = {};
needsString(str: string): void { console.log(str);}
useLangKey(langKey: LanguageKey): void {
if (langKey in this.languages) {
const language = this.languages[langKey];
this.needsString(language); // <-- "'string | undefined' is not assignable to 'string'" ??
}
}
}
TS 在标记行上抱怨“‘字符串 | 未定义’类型的参数不能分配给‘字符串’类型的参数。”。 测试
langKey in this.languages
还不够吗?
🤔
如何保证该记录存在?未定义不在 LanguageKey 中,我认为这就是它所抱怨的。
您可以通过添加空支票来解决此问题
...
const language = this.languages[langKey];
if(!language) throw Error();
this.needsString(language);
...