打字稿界面[]与[界面]

时间:2017-10-16 04:52:53

标签: node.js typescript mongoose

我正在尝试为我的mongoose文档分配一个Article数组,但似乎Typescript不喜欢它,我不知道为什么它显示这个警告/错误,它不可分配。

我的猫鼬模式和接口(简化):

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 []'不能指定为'[Article]'类型   “Article []”类型中缺少属性“0”。

我的问题:

为什么它说它不可转让,[Article]和Article []之间有什么区别呢?

1 个答案:

答案 0 :(得分:2)

[Article]表示不同的内容:tuple类型,包含1个文章元素。

您可能希望使用与Article[]相同类型的Array<Article>