如何用 typescript 表达以下内容?
type LanguageName = "javascript" | "typescript" | "java" | "csharp"
type LanguageToWasmMap = {
[key in LanguageName]: Exclude<LanguageName, key>
}
//I want the below to not throw error
const languageNameToWasmNameMap: LanguageToWasmMap = {
"javascript" : "typescript"
}
//I want the below to throw error
const languageNameToWasmNameMapWithUndefined: LanguageToWasmMap = {
"javascript" : undefined
}
typescript 操场:单击此处
进一步考虑,将LanguageToWasmMap设置为Optional是有意义的,因为它意味着什么,并对undefined执行运行时检查。
4条答案
按热度按时间dzjeubhm1#
您可以使用
Partial
告诉TS不需要所有密钥。运动场
yhxst69z2#
您需要将其设置为可选,并在tsconfig中设置
exactOptionalPropertyTypes=true
,以禁止underfined
为可选Playground
brccelvz3#
使用
as
似乎可以解决这个问题。不确定这是否有任何意想不到的副作用。Playground
wtlkbnrh4#
我想您可以将类型设置为泛型,但需要指定两次键:
播放