2017-10-16 195 views
1

我想的Article數組分配給我的貓鼬的文件,但它似乎打字稿不喜歡這一點,我不知道爲什麼它顯示此警告/錯誤,它不轉讓。打字稿接口[] VS [Inferface]

我的貓鼬架構和接口(簡體):

interface Profile { 
    username: string, 
    articles: [Article] 
} 

interface Article { 
    index: number, 
    name: string, 
} 

// Mongoose model 
export interface IProfile extends Profile, Document { } 
const Article = new Schema({ 
    index: { type: Number, required: true }, 
    name: { type: String, required: true }, 
}, { _id: false }) 

const Profile = new Schema({ 
    username: { type: String, index: true }, 
    upcomingChests: { type: [Article] }, 
}, { timestamps: true }) 

export const Profile = model<IProfileModel>('IProfile', Profile) 

我的代碼試圖分配文章:

const profile: Profile = values[0] 
const articles: Array<Article> = values[1] 
profile.articles = articles // Error/Warning pops up in this line 

[TS]類型 '第[]' 是不可轉讓鍵入'[條]'。
類型'Article []'中缺少屬性'0'。

我的問題:

它爲什麼說這是不可轉讓的,什麼是之間[文章]和第[]在所有的差異?

+0

的可能的複製[類型 '陣列\ [\]' 不是分配給輸入 '\ [陣列\]'](https://stackoverflow.com/questions/40697919/type-array-is-not-assignable -type-array) – jcalz

回答

2

[Article]意味着不同的東西:一個tuple類型與第1元件。

你可能想用Article[],同類型Array<Article>

+0

因此,我應該更改配置文件的界面,以便它說'文章:Article []'是正確的? – kentor

+0

我不能多說你的實際數據,但應該解決類型不匹配問題(並且更有可能在此處使用)。 – Jokester