Typescript 对象可能为 null,尽管它具有初始值

Typescript Object is possibly null though it has initial value

提问人:Yery cs 提问时间:3/22/2023 更新时间:3/22/2023 访问量:210

问:

1: let a: Record<string, any> | null = {};
2: a['b'] = 2;

在第 2 行,我收到错误,尽管它具有初始值。TS2531: Object is possibly 'null'

因此,我不得不更改上面的代码,如下所示

1: let a: Record<string, any> | null = {};
2: if (a) {
3:   a['b'] = 2;
4: }

实际上,条件是不必要的,因为有价值。 它只是 tslint 需要的。我想删除不必要的条件。 我该怎么做?ifa{}if

TypeScript 对象 null tslint

评论

0赞 Robby Cornelissen 3/22/2023
来得及。const
0赞 Yery cs 3/22/2023
不,我给后面的代码赋予了价值。a
0赞 Robby Cornelissen 3/22/2023
是的,这就是问题所在。不能指望 TypeScript 编译器跟踪运行时逻辑。
0赞 katniss 3/22/2023
你不这样做有什么原因吗?a = { b: 2 }
0赞 Yery cs 3/22/2023
对不起,这只是示例代码,实际代码有点复杂。我做不到

答:

0赞 AnasSafi 3/22/2023 #1

您可以使用以下工具:Non-null assertion

a!['b'] = 2;

评论

0赞 Yery cs 3/22/2023
我收到新的 lint 错误。Forbidden non-null assertion