首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用对象解构过滤以删除typescript中的未定义项

使用对象解构过滤以删除typescript中的未定义项
EN

Stack Overflow用户
提问于 2021-08-20 16:58:56
回答 1查看 40关注 0票数 0

我想在仍然使用类型保护的同时使用对象解构。然而,在过滤掉未定义的对象键之后,typescript仍然推断出未定义的类型。

我不想使用非空断言,因为我们的linter会抱怨。

例如:

代码语言:javascript
复制
type theDataStructure = {
 payloadKey1: string,
 payloadKey2: string,
 requiredForPayload?: string ,
 otherKeyNotNeededinPayload: string,
}

const unfilteredPayload: theDataStructure[] = getPayload()

unfilteredPayload
   .filter(({ requiredKey }) => requiredKey && arbitraryBusinessLogic(requiredKey)
   .map(({ payloadKey1, payloadKey2, requiredKey }) => sendPayLoad(payloadKey1, payloadKey2, requiredKey)

Typescript的类型仍然是requiredKey |在map函数中未定义。

EN

回答 1

Stack Overflow用户

发布于 2021-08-20 17:07:14

filter不会更改阵列的类型。在TS存储库中的某个地方应该有一个开放的问题,请求传播类型缩小,因为这是一个常见的用例。

代码语言:javascript
复制
// Still T[]:
filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68865701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档