无法推送到联合类型数组
Cant push to UnionType array
我正在 TS 中使用 UnionTypes,我认为我可以创建一个可以使用它们的有效场景,但我不明白为什么这会因以下错误而中断:
Argument of type '{ name: string; }' is not assignable to parameter of type 'string & { name: string; }'
我知道“强制”这种局部方法的方法,但我想了解为什么这不起作用。
let newArray: string[] | { name: string }[] = new Array();
//just a boolean to know when is one type or the other
if (isMultiple) {
otherArray.forEach((item: { name: string }) => {
newArray.push(item)
})
}
else {
otherArray.forEach((item: { name: string }) => {
newArray.push(item.name)
});
}
return newArray
除非你想允许混合数组(let newArray: (string | { name: string })[]
),否则你可以使用
// just a boolean to know when is one type or the other
if (isMultiple) {
const newArray: { name: string }[] = [];
otherArray.forEach((item: { name: string }) => {
newArray.push(item)
});
return newArray;
} else {
const newArray: string[] = [];
otherArray.forEach((item: { name: string }) => {
newArray.push(item.name)
});
return newArray;
}
你不能同时拥有这两种类型的数组。您可以这样做并定义它,然后在 if 语句
中单独创建它
let newArray: string[] | { name: string }[];
//just a boolean to know when is one type or the other
if (isMultiple) {
newArray = new Array< { name : string }>();
otherArray.forEach((item: { name: string }) => {
newArray.push(item)
})
}
else {
newArray = new Array<string>();
otherArrayforEach((item: { name: string }) => {
newArray.push(item.name)
});
}
return newArray
我正在 TS 中使用 UnionTypes,我认为我可以创建一个可以使用它们的有效场景,但我不明白为什么这会因以下错误而中断:
Argument of type '{ name: string; }' is not assignable to parameter of type 'string & { name: string; }'
我知道“强制”这种局部方法的方法,但我想了解为什么这不起作用。
let newArray: string[] | { name: string }[] = new Array();
//just a boolean to know when is one type or the other
if (isMultiple) {
otherArray.forEach((item: { name: string }) => {
newArray.push(item)
})
}
else {
otherArray.forEach((item: { name: string }) => {
newArray.push(item.name)
});
}
return newArray
除非你想允许混合数组(let newArray: (string | { name: string })[]
),否则你可以使用
// just a boolean to know when is one type or the other
if (isMultiple) {
const newArray: { name: string }[] = [];
otherArray.forEach((item: { name: string }) => {
newArray.push(item)
});
return newArray;
} else {
const newArray: string[] = [];
otherArray.forEach((item: { name: string }) => {
newArray.push(item.name)
});
return newArray;
}
你不能同时拥有这两种类型的数组。您可以这样做并定义它,然后在 if 语句
中单独创建它let newArray: string[] | { name: string }[];
//just a boolean to know when is one type or the other
if (isMultiple) {
newArray = new Array< { name : string }>();
otherArray.forEach((item: { name: string }) => {
newArray.push(item)
})
}
else {
newArray = new Array<string>();
otherArrayforEach((item: { name: string }) => {
newArray.push(item.name)
});
}
return newArray