如何告诉打字稿 map.get 将始终返回一个值?

Ale*_* l. 8 typescript

map是 的一个实例Map。在此代码中,我想创建新的[key, value]对(如果尚不存在),然后进行编辑propertyInValue

if (!map.has(key)) { 
    map.set(key, new Value())
}
map.get(key).propertyInValue = doSomething()
Run Code Online (Sandbox Code Playgroud)

Object is possibly 'undefined'我收到错误map.get(key)

我可以以某种方式告诉 TypeScript 不要担心它吗?可以在 tsconfig.json 中完成吗?

Ale*_* l. 8

我想到了。

非空断言拯救了一切!

map.get(key)!.propertyInValue = doSomething()
Run Code Online (Sandbox Code Playgroud)

也可以设置"strictNullChecks": falsetsconfig.json

  • 唯一的问题是,如果该值为空或未定义,则打开代码以查找错误。我认为如果你使用下面的代码会更安全。让 a = map.get(key) || 新值();a.propertyInValue = doSomething() (2认同)