我想用对象和不同类型定义一个接口 比如
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 interface或How can I define the types of an object variable in Typescript?)
感谢您协助寻找解决方案。
答案 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