开发者问题收集

如何处理打字稿中可能未定义的内容?

2018-07-06
1420

我在TS2322错误中遇到问题:

608345524

这是我的代码:

313567751

where键是其类的可选参数(S3.Types.ObjectList用于全面披露)。

我100%确定键中没有未定义的元素,因为我使用过滤器将其删除。

您将如何删除此错误?

问候, 朱利安

1个回答

不幸的是,Typescript 不会以任何方式从 filter 中流出检查信息,因此我们唯一能做的就是使用非空断言:

const keys: string[] = objectList
  .map(obj => obj.Key!) // ! means we know this is not null, we won't actually know until the next check 
  .filter(key => !!key);

或者使用更一致的版本,我们仅在检查后进行断言:

const keys: string[] = objectList
  .filter(obj => !!obj.Key)
  .map(obj => obj.Key!) 
Titian Cernicova-Dragomir
2018-07-06