【发布时间】:2022-02-08 23:48:20
【问题描述】:
我需要一些帮助来完成我的 TypeScript 冒险。
这是我的示例类型:
type Target = {
names: string[]
addresses: {
location: string
}[]
};
这是我的示例对象:
const myTarget: Target = {
names: ["Alex", "Nico"],
addresses: [
{
location: "Miami",
},
{
location: "New York",
},
],
};
这是我的函数示例:
const changeValue = (
key: keyof Target,
value: string | Record<string, unknown>
) => {
myTarget[key] = [...myTarget[key], value]
}
changeValue('names', 'Elvis')
changeValue('addresses', { location: "Atlanta" })
我在myTarget[key] 上有一个错误:
无法将类型 '(string | Record
)[]' 分配给类型 'string[] & { location: string; }[]'。
无法将类型 '(string | Record)[]' 分配给类型 'string[]'。
无法分配类型“字符串 | “字符串”类型的记录'。
无法将类型 'Record' 分配给类型 'string' .ts(2322)
据我了解,例如,TypeScript 正在测试所有组合,包括将对象添加到无效的 names 数组中,或者在 addresses 数组中添加字符串。
有人可以帮助我了解问题所在以及我该如何处理。 (真正的项目要复杂得多,但也许通过这个例子我会明白一点..)
非常感谢。
【问题讨论】:
标签: javascript arrays typescript object types