我在 TS 中使用 UnionTypes,我認為我可以創建一個可以使用它們的有效場景,但我不明白為什么這會因以下錯誤而中斷:
'{ name: string; 型別的引數 }' 不能分配給 '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
uj5u.com熱心網友回復:
您不能同時擁有兩種型別的陣列。您可以這樣做并定義它,然后在 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
uj5u.com熱心網友回復:
除非您想允許混合陣列 ( 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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/449557.html
標籤:javascript 数组 打字稿 打字 联合类型
上一篇:變數上getBoundingClientRect的Typescript型別,該變數可能是window或htmlElement
下一篇:型別被注釋時打字稿映射型別錯誤
