我们如何在typescript中定义对象类型接口?

时间:2017-09-13 22:40:50

标签: typescript interface

我想用对象和不同类型定义一个接口  比如

export interface example {
   code: string;
   category : {
     name : string,
     reference: string,
     sequence : number
   };
}

在定义中,没有问题,但在调用之后

ex = {} as example;
ex.category.name ='electric; 

这不起作用,并且发生以下错误

  

错误错误:未捕获(承诺):TypeError:无法设置属性' name'未定义的   TypeError:无法设置属性' name'未定义的

有一些类似的科目,但它们并不完全相关。 (How to define object in type script interfaceHow can I define the types of an object variable in Typescript?

感谢您协助寻找解决方案。

1 个答案:

答案 0 :(得分:1)

Type assertions并不意味着该对象肯定会是您在运行时声明的形状。您可以断言任何类型的任何对象,但如果您的运行时类型不匹配,它最终会在运行时失败。

在您的示例中,class A{ constructor() { this.polymorphism(); } polymorphism(){ console.log("A") } } class B extends A{ constructor(param) { super(); } polymorphism() { console.log("B") /**use param * business code**/ } } new B() 对象没有ex属性,因此在运行时它将为category,从而导致您的错误。

您也可以在对象中初始化undefined属性:

category