我遇到TS2322错误的问题:
类型(字符串|未定义)[]无法分配给字符串类型[]
这是我的代码:
const keys: string[] = objectList
.map(obj => obj.Key)
.filter(key => { return !!key;});
其中Key是其类的可选参数(完整披露为S3.Types.ObjectList)。
我100%确信键中没有未定义的元素,因为我正在使用过滤器删除它们。
您将如何删除此错误?
关于, 朱利安
答案 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!)