Files
NapCatQQ/.pnpm-store/v3/files/0b/a6505df948661e0dc71bf6ef7e55972a1bddea8475b75590e8199e7d27927ccddb2a3324da9eb0a73d00d53a65c8930d340ff756a8dfc8abd8acc7a7e7e856
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

28 lines
765 B
Plaintext

// Preserve type guard predicate behavior when passing to mapper
export function filterMap<T, U, S extends T = T>(
array: readonly T[],
predicate: (item: T, index: number) => item is S,
mapper: (item: S, index: number) => U | U[],
): U[]
export function filterMap<T, U>(
array: readonly T[],
predicate: (item: T, index: number) => boolean,
mapper: (item: T, index: number) => U | U[],
): U[]
export function filterMap<T, U>(
array: readonly T[],
predicate: (item: T, index: number) => boolean,
mapper: (item: T, index: number) => U | U[],
): U[] {
return array
.reduce<(U | U[])[]>((acc, item, i) => {
if (predicate(item as any, i)) {
acc.push(mapper(item as any, i))
}
return acc
}, [])
.flat() as U[]
}