gpt4 book ai didi

typescript - 在 typescript 中从一种联合类型映射到另一种联合类型

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:30 24 4
gpt4 key购买 nike

我一直很喜欢 typescript 中的联合类型,但我刚刚遇到了第一个障碍。

这是有问题的成员:

organizations: Organization[] | number[];

这就是我想要做的:

let orgs = organziations.map(org => org.id);

换句话说,取这个 <Organization[]> 的集合并将它映射到它的 id,这样我就可以拥有一个 <number[]> 的集合.

我得到的错误是[ts] 无法调用类型缺少调用签名的表达式。没错,map 不知道它正在处理的是哪种类型。不幸的是,到目前为止,我所做的一切都没有帮助规划。

最佳答案

你应该使用 type guard为了测试变量是否具有正确的类型。例如:

interface Organization {
id: string
}

function isOrganizationList(list: any[]): list is Organization[] {
return list.length === 0 || list[0].id !== undefined
}

let organizations: Organization[] | number[],
orgs: string[];

if (isOrganizationList(organizations))
orgs = organizations.map(org => org.id);

注意:您可以使用更健壮的测试编写自己的 isOrganizationList 实现。

关于typescript - 在 typescript 中从一种联合类型映射到另一种联合类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39804932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com