当前位置: 首页 > 知识库问答 >
问题:

创建对象和添加值的类型无法设置属性'X'的未定义

巫马泰
2023-03-14

您好,我有一个小问题要理解打字稿以及如何创建具有属性的对象。

我不明白我怎么能创建一个对象,并在创建后添加一些值。

我读了许多博客,有可能的解决方案,但没有任何工作。我得到的只是“无法设置未定义的属性‘书名’”。

我已经试过这个解决方案了。类型脚本和字段初始值设定项

如何在TypeScript中基于接口文件定义创建对象?

在打字稿中如何修复无法设置未定义的属性“第一”

至少我知道,我还没有完全理解打字稿是如何工作的,以及我应该如何修复它。学习这门语言有点令人沮丧。我只有Java的经验…

我的示例代码

//one ts file
 export interface Book {
   bookTitle: string;
   currentStatus: string;
   daysLeft: number;
   preregistrationStatus: string;
   returnDate: string;
   signature: string;
 }

 export class Lib {
   books: Array<Book>;

 ionViewDidLoad(): void {
  this.getBorrowedBooks();
 }

 getBorrowedBooks(): void {
  this.api.get('library/borrowedbooks')
  .map(res => res.json())
  .subscribe(
    data => {
      for ( let _i: number = 0; _i < data.length; _i++) {
        this.metaInfo.set( data[_i].bookTitle, data[_i].daysLeft);
       var book: Book = {
        bookTitle: data[_i].bookTitle,
        currentStatus: data[_i].bookTitle,
        daysLeft: data[_i].bookTitle,
        preregistrationStatus: data[_i].bookTitle,
        returnDate: data[_i].bookTitle,
        signature: data[_i].bookTitle,
      };
     this.books.push(book);
  }
 }

//编辑

响应机构

[
  {
    "bookTitle": "Mobile computing / Fuchß, Thomas , 2009 ",
    "returnDate": "2018-03-04",
    "currentStatus": "2. Verlängerung ",
    "signature": "2009 A 3032;h",
    "daysLeft": 21,
    "preregistrationStatus": ""
  }
 ]

共有1个答案

羊煜
2023-03-14

只需初始化属性。更改:

books: Array<Book>;

收件人:

books: Array<Book> = [];

我只有Java方面的经验...

回顾过去,记住你必须阅读语言来学习它。打字稿也不例外,一本好书会给你很大的帮助。

 类似资料:
  • 问题内容: 因此,我在回答这个问题的同时一直在使用Python,但发现这是无效的: 由于 。但是,对于从对象继承的任何类,它都是有效的: 打印将按预期显示“ hello”。为什么会这样呢?在Python语言规范中,有哪些规定不能将属性分配给香草对象? 问题答案: 为了支持任意属性分配,对象需要一个:与对象关联的字典,可以在其中存储任意属性。否则,就无处放置新属性。 的实例object并没有随身携带

  • 问题内容: 我的代码: 我收到以下错误: Uncaught TypeError:无法设置未定义的属性“ greeting”。 我正在尝试做类似于关联数组的操作。为什么这不起作用? 问题答案: 您永远不会设置任何值。 因此,计算为,您无法在上设置属性。 如果您添加正确,事情应该会按预期进行。 另外,您可以使用对象初始化程序: 或者,您可以在匿名函数实例中设置的所有属性: 如果您在支持ES2015功能

  • 我在我的组件中接收道具。我想在此组件中添加一个带有道具的属性“LegendPosition”。我不能那样做。请帮我做这个。我已经尝试过此代码,但没有成功:

  • 我有这个代码: 谁能告诉我我错在哪里?

  • 问题内容: 我要返回一个Mongoose文档,并希望在发送之前向其中添加一些元数据。但是,我无法添加任何属性,我不确定为什么。我检查了它是否可以使用Object.isExtensible(doc)扩展。 可能是什么问题? 问题答案: 啊..我的对象是一个Mongoose文档,不允许添加属性。解决方案是将返回的文档转换为普通对象,或者在查询中调用lean()。

  • 给出异常:org.springframework.beans.factory.beanCreationException:创建名称为“list test”的bean时出错:注入autowired依赖项失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:无法自动连接字段:private java.util.list com.