使用变量检查对象是否未定义不起作用 Typescript
2021-10-16
880
我想访问对象中的键,但在这样做之前,我当然需要先检查该对象是否已定义。如果我使用字符串引用该键,则此方法有效,但如果我使用赋值了字符串的变量引用它,则 TypeScript 会大喊大叫:
type Fruit = "apple" | "orange";
type State = {
[id in string]?: {
[fruit in Fruit]: {
status: "ripe" | "rotten";
};
};
};
const state: State = {};
const id = "hello";
if (state[id]) {
state[id].apple.status = "ripe";
^^^^^^^^^
Object is possibly 'undefined'.(2532)
}
if (state["hello"]) {
// This is perfectly OK
state["hello"].apple.status = "ripe";
}
为什么会这样?
请参阅 打字稿游乐场
2个回答
您可以使用
!
typescript 忽略了值可能未定义的事实,而您的情况下并非如此
state[hello]!.apple.status = "ripe";
xhxe
2021-10-16
使用其中任何一个,而不是仅使用 state['hello'] 进行检查
- !!state['hello']
- state['hello'] !== undefined
Mrudula Nudurupati
2021-10-16