我在MongoDB上有Angular应用程序,从那里我将数据抓取到具有一个条目且看起来像这样的数组命名书籍:

{_id: "5b768f4519d48c34e466411f", name: "test", reservation: null, reserved: false, __v: 0}


使用TypeScript界面

interface Books {
    id?: Number;
    name: String;
    reservation: Number;
    reserved: Boolean;
}


我试图从基于“ _id”的数组条目中查找保留值。当按下在代码下方运行的按钮时,将插入===之后的另一个无下划线的“ id”变量:

findBook(id) {
      const result = this.books.find( sfid => sfid._id === id);
      console.log('reservation for this book is: ' + result.reserved);
        // todo: do something if book is reserved
    }


现在这可以正常工作,并且我得到了结果,但是在Angular调试器中我得到了以下错误:


  src / app / components / index / index.component.ts(24,56)中的错误:错误
  TS2339:类型'Books'上不存在属性'_id'。


那就是说,我应该如何正确地使用“ _id”值名称进行搜索?用“ sfid.id”替换“ sfid._id”不起作用。

最佳答案

可接受的答案只是一种解决方法,可以使Typescript停止抱怨接口中未实现_id。真正的解决方法是实现它:

interface Book {
   _id : string; // <-- Add this
   name: string;
   reserved : boolean;
   reservation : any;
}

07-24 18:04