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

时间:2018-07-06 07:59:08

标签: typescript undefined

我遇到TS2322错误的问题:

  

类型(字符串|未定义)[]无法分配给字符串类型[]

这是我的代码:

 const keys: string[] = objectList
      .map(obj => obj.Key)
      .filter(key => { return !!key;});

其中Key是其类的可选参数(完整披露为S3.Types.ObjectList)。

我100%确信键中没有未定义的元素,因为我正在使用过滤器删除它们。

您将如何删除此错误?

关于, 朱利安

1 个答案:

答案 0 :(得分:1)

不幸的是,Typescript不会以任何方式发送来自filter的检查信息,因此我们唯一能做的就是使用not null断言:

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!)