gpt4 book ai didi

javascript - 如何在 typescript 中减去两个只读数组

转载 作者:行者123 更新时间:2023-11-30 13:46:35 28 4
gpt4 key购买 nike

我们知道我们不能在 Typescript 中连接只读数组,
但是我们可以做到这一点

readonly ArrA = [1, 2, 3] as const;
readonly ArrB = [4, 5] as const;
readonly Arr = [...ArrA, ...ArrB];

那么加法就完成了,减法呢?
ps:如果不是readonly,我们可以这样做

ArrA.filter(n => !ArrB.includes(n));

最佳答案

includes如果将“ES7”添加到 compilerOptions.lib,将可用(无论是否为只读)在 tsconfig.json .


如果你关心数组成员级别的类型安全,你可以这样做:

const ArrA = [1, 2, 3] as const;
const ArrB = [3, 4, 5] as const;

// Aliases for tuple-member types
type ArrAMember = typeof ArrA[number] // (1 | 2 | 3)
type ArrBMember = typeof ArrB[number] // (3 | 4 | 5)

type ExclusionListMember = Exclude<ArrAMember, ArrBMember> // (1 | 2)

// Type-guard to verify exclusion
function isExcludedByB(i: ArrAMember): i is ExclusionListMember {
return !ArrB.includes(i as any)
}

const ArrC = ArrA.filter(isExcludedByB)
// ^ (1 | 2)[]

关于javascript - 如何在 typescript 中减去两个只读数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59206806/

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