javascript - 引入抽象類別或屬性時的 Typescript 錯誤?
我有一個 DOCUMENTATION_CATALOG 它被定義為這樣:
export const DOCUMENTATION_CATALOG: {[key:string]:TopicCategory[]} = {}
我們可以像這樣獲取 TopicCategory 陣列;
const values:TopicCategory[] =
Object.keys(DOCUMENTATION_CATALOG).map(
key => DOCUMENTATION_CATALOG[key])
當我使用 AbstractTopic 擴展 TopicCategory 時,我對 values 變數收到以下錯誤:
const values: TopicCategory[] 類型 'TopicCategory[][]' 無法指派給類型 'TopicCategory[]'。類型 'TopicCategory[]' 與類型 'TopicCategory' 沒有共同的屬性。
這是 Stackblitz
我將它稍微再隔離了一點。如果 TopicCategory 中沒有任何屬性,就不會觸發錯誤。
答案#1
你的 DOCUMENTATION_CATALOG 是一個從 string 映射到 TopicCategory[] 的對應表。
你的 values 是 TopicCategory[] 類型,但傳入 map() 的回呼函式返回 DOCUMENTATION_CATALOG 中的某個值,也就是說,返回的是 TopicCategory[]。因此,map() 調用的結果是一個 TopicCategory[] 的陣列,也就是 TopicCategory[][]。
我無法提出任何建議,因為我不確定 value 的預期用途,或者 DOCUMENTATION_CATALOG 是否具有錯誤的類型。
有兩種不同的解決方案:
要麼 value 需要是 TopicCategory[][] 類型,
或 DOCUMENTATION_CATALOG 需要是 {[key:string]:TopicCategory}。