【发布时间】:2021-11-25 20:05:30
【问题描述】:
我有两个功能完全相同的功能,因此它似乎是替代它们的通用功能的主要候选者。但是我不能完全正确,提取的值与原始类型不完全相同,因为返回类型应该是原始结果/错误类型,但现在没有未定义。
type Value = string;
type PurchaseResult = {
result: Value | undefined,
error: Error | undefined,
}
该函数的现有示例之一(对于另一个函数,将键和类型替换为结果/值:
const extractErrors = (
purchaseResults: PurchaseResult[]
) =>
purchaseResults
.map(({ error }) => error)
.filter((error): error is Error => Boolean(error));
尝试失败
const extractOnlyDefinedValuesFromArrayOfObjects = <
T,
K extends keyof A,
A extends { [k in K]: T }
>(
list: A[],
key: K
): T[] =>
list
.map((obj) => obj[key])
.filter((value) => typeof value !== 'undefined');
const extractedResults = extractOnlyDefinedValuesFromArrayOfObjects<
Value,
'result',
PurchaseResult
>('result', arrayOfResults);
谢谢!
【问题讨论】:
标签: typescript typescript-generics