該賞金到期in 4天。此問題的答案有資格獲得 300聲望獎勵。 drake035想引起更多人對這個問題的關注。
我不明白為什么會出現此錯誤:
'{ id: string; 型別的引數 }' 不可分配給型別為 'never' 的引數。
... 在線 const index = state.sections.findIndex((section) => section.id === id);
在我的 Vue 商店的以下部分:
import { MutationTree, ActionTree, GetterTree } from 'vuex';
interface section {
id: string;
section_header: string;
section_body: string;
sectionItems: any;
}
interface sections extends Array<section>{}
export const state = () => ({
sections: [
{
id: '1',
section_header: 'lorem',
sectionItems: []
},
{
id: '2',
section_header: 'ipsum',
sectionItems: []
}
]
});
type EditorState = ReturnType<typeof state>;
export const mutations: MutationTree<EditorState> = {
ADD_SECTION_ITEM(state, id) {
const index = state.sections.findIndex((section) => section.id === id);
const sectionItem = {
id: randomId()
}
state.sections[index].sectionItems.push(sectionItem);
},
};
uj5u.com熱心網友回復:
我會說你可能需要輸入你的 sectionItems:
interface SectionItem {
id: string
}
interface Section {
id: string;
section_header: string;
section_body?: string;
sectionItems: SectionItem;
}
因為,當您不指定 sectionItems 的型別時,typescript 會查看您在狀態中初始化的 sectionItems(等于 [])并且無法識別應該在該陣列中的元素的型別。
所以你定義它。此外, section_body 應該是可選的,因為它不在所有示例中。介面名稱在打字稿中應大寫。
另外,我認為您不需要部分界面。如果你想輸入一些東西作為介面的陣列,只需使用 section[] 作為型別,就像你做 string[] 一樣。
最后,這取決于您,但我建議不要在您的界面(以及一般的代碼中)使用不同的命名約定:section_body 是 snake_case 而 sectionItems 是 camelCase,通常最好堅持使用一個并將其保留在所有代碼中.
uj5u.com熱心網友回復:
我認為你需要state.sections.push(sectionItem)而不是state.sections[index].sectionItems.push(sectionItems).
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/395508.html
上一篇:為什么在這個Vue3應用程式中導致無法將計算屬性系結為行內樣式?
下一篇:從函式回傳vue組件
