gpt4 book ai didi

typescript - 如何编写一个函数,通过类型检查向对象数组添加一个字段?

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

我想通过向对象添加一个字段来“装饰”对象数组。我想创建一个函数,将具有用户指定值的用户指定字段添加到该数组中的每个对象。

问题是我不知道如何编写这样的函数。

这甚至无法编译。

  public static addField<T extends object>(
array: T[],
field: string,
value: any,
): Array<T extends { [field]: string}> {
return array.map((object) => ({ ...object, [field]: value }));
}

这行不通。

  public static addField<T extends object>(
array: T[],
field: string,
value: any,
): T[] {
return array.map((object) => ({ ...object, [field]: value }));
}

最佳答案

您可以使用交集和Record 来完成,但需要一些断言

class x {
public static addField<T extends object, K extends PropertyKey, V>(
array: T[],
field: K,
value: V
): Array<T & Record<K, V>> {
const addedValue = { [field]: value } as Record<K, V>
return array.map((o) => ({ ...o, ...addedValue }));
}
}

x.addField([{ a: 1 }], "b", "").map(_ => _.a + _.b)

关于typescript - 如何编写一个函数,通过类型检查向对象数组添加一个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55568548/

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