打字稿中未定义的属性

蒙塔瑟·穆赫塔塞布

我在打字稿中有一个问题,即当我在控制台中登录时,对象的属性仍然给我未定义。这是我的课:

export class CustomerGroupModel {
    public Id: number;
    public Name: string; 
    public Active: boolean;
}

addcustomersGroup.component.ts

   public customersGroups : CustomerGroupModel[] = [];

   let customerGroup = this.customersGroups[form.value.customer_group];

   console.log(customerGroup);
   console.log(customerGroup.Name);

输出是

{id: 2, name: "Group2", active: false, customers: Array(0)}
undefined
JB尼泽

你似乎不明白的是,TypeScript 纯粹是一个编译器。运行时没有类型检查。因此,例如,这将在 TypeScript 中完美运行:

const foo: number = 1;
const bar: any = foo;
const baz: string = bar;

请参阅:您最终得到一个baz类型为变量的变量string,它实际上引用了一个数字。因为在运行时,它变成了普通的旧 JavaScript:

var foo = 1;
var bar = foo;
var baz = bar;

所以,当你写

public getCustomerGroups() { 
  return this.http.get<CustomerGroupModel[]>(this.baseUrl + "api/CustomerGroup/getallgroup"); 
}

你告诉 TypeScript 编译器:“相信我,由返回的 observable 发出的事件http.get()是类型CustomerGroupModel[]”。编译器无法检查这是否有意义,并且在运行时没有类型检查。就像前面的例子一样。

但这没有意义。http 所做的将它接收到的 json 字符串转换为 JavaScript 对象的所有操作都是return JSON.parse(string). 那不会,也永远不会返回CustomerGroupModel[]. 拥有 实例的唯一方法CustomerGroupModel是调用new CustomerGroupModel().

所以

  1. 制作CustomerGroupModel一个接口,而不是一个类:它清楚地表明你实际上永远不会拥有作为类的实际实例的对象CustomerGroupModel仅具有与CustomerGroupModel接口中定义的属性相同的属性的对象
  2. 修复您的接口定义,使其属性实际上与服务器发送的 JSON 中的属性匹配:id, name, active, customers不是Id, Name, Active好消息是它还会让您遵守 TypeScript/JavaScript 命名约定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

打字稿:无法获取属性“块”的值:对象为null或未定义

来自分类Dev

带有泛型的打字稿中存在问题:无法读取未定义的属性“原型”

来自分类Dev

意外的打字稿,这是未定义的类型

来自分类Dev

打字稿中未定义与未分配的变量

来自分类Dev

打字稿.length返回未定义

来自分类Dev

从外部文件在打字稿中声明var获取ReferenceError:...未定义

来自分类Dev

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

来自分类Dev

打字稿模块:已定义未定义

来自分类Dev

未捕获的ReferenceError:define未定义打字稿

来自分类Dev

调试会话期间打字稿未定义的常量

来自分类Dev

TypeError:无法读取未定义的属性'getText'-量角器打字稿

来自分类Dev

从打字稿节点中的异步等待中获取未定义

来自分类Dev

从打字稿节点中的异步等待中获取未定义

来自分类Dev

即使对象已满,对象属性也返回未定义。打字稿

来自分类Dev

打字稿:问号与未定义类型联合

来自分类Dev

在打字稿中引用VSS.SDK。错误:未定义VSS

来自分类Dev

打字稿导入的对象未定义

来自分类Dev

作法:打字稿实例栏位避免未定义

来自分类Dev

“未定义!”在打字稿中是什么意思?

来自分类Dev

打字稿Angularjs未捕获ReferenceError:未定义应用

来自分类Dev

未定义的NodeJS'toUpperCase'(从打字稿生成)

来自分类Dev

打字稿-未捕获的ReferenceError:未定义Toastr

来自分类Dev

this。$ el在编写打字稿插件时未定义

来自分类Dev

打字稿通用类型和未定义

来自分类Dev

打字稿错误:无法读取未定义的属性X

来自分类Dev

反应和打字稿:无法读取未定义的属性“0”

来自分类Dev

打字稿中的减法返回未定义

来自分类Dev

在打字稿中创建类时奇怪的未定义?

来自分类Dev

打字稿 - 派生相同类型但没有未定义属性的通用

Related 相关文章

  1. 1

    打字稿:无法获取属性“块”的值:对象为null或未定义

  2. 2

    带有泛型的打字稿中存在问题:无法读取未定义的属性“原型”

  3. 3

    意外的打字稿,这是未定义的类型

  4. 4

    打字稿中未定义与未分配的变量

  5. 5

    打字稿.length返回未定义

  6. 6

    从外部文件在打字稿中声明var获取ReferenceError:...未定义

  7. 7

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

  8. 8

    打字稿模块:已定义未定义

  9. 9

    未捕获的ReferenceError:define未定义打字稿

  10. 10

    调试会话期间打字稿未定义的常量

  11. 11

    TypeError:无法读取未定义的属性'getText'-量角器打字稿

  12. 12

    从打字稿节点中的异步等待中获取未定义

  13. 13

    从打字稿节点中的异步等待中获取未定义

  14. 14

    即使对象已满,对象属性也返回未定义。打字稿

  15. 15

    打字稿:问号与未定义类型联合

  16. 16

    在打字稿中引用VSS.SDK。错误:未定义VSS

  17. 17

    打字稿导入的对象未定义

  18. 18

    作法:打字稿实例栏位避免未定义

  19. 19

    “未定义!”在打字稿中是什么意思?

  20. 20

    打字稿Angularjs未捕获ReferenceError:未定义应用

  21. 21

    未定义的NodeJS'toUpperCase'(从打字稿生成)

  22. 22

    打字稿-未捕获的ReferenceError:未定义Toastr

  23. 23

    this。$ el在编写打字稿插件时未定义

  24. 24

    打字稿通用类型和未定义

  25. 25

    打字稿错误:无法读取未定义的属性X

  26. 26

    反应和打字稿:无法读取未定义的属性“0”

  27. 27

    打字稿中的减法返回未定义

  28. 28

    在打字稿中创建类时奇怪的未定义?

  29. 29

    打字稿 - 派生相同类型但没有未定义属性的通用

热门标签

归档