我无法转换以下课程:
class DataService {
styles: Object[];
selectedStyle: Object;
selectedChildStyle: Object;
constructor() {
this.styles = [{
"name": "Parent",
"child": {}
}];
this.selectedStyle = this.styles[0];
// THE BELOW LINES CREATE PROBLEM
if (this.selectedStyle.child && this.selectedStyle.child.length)
this.selectedChildStyle = this.selectedStyle.child[0];
else
this.selectedChildStyle = null;
}
}
这不让我npm启动应用程序。如果我将最后四行取消注释,它会给代码ELIFECYCLE带来一个奇怪的错误。
请帮忙!
答案 0 :(得分:2)
这是因为您使用Object
作为this.selectedStyle
的类型,而Object
没有名为child
的字段。
如果您希望编译器了解类型,那么您需要定义它们,例如:
interface Style {
name: string;
child: Style[];
}
class DataService {
styles: Style[];
selectedStyle: Style;
selectedChildStyle: Style;
constructor() {
this.styles = [{
"name": "Parent",
"child": [<Style> {}]
}];
this.selectedStyle = this.styles[0];
// THE BELOW LINES CREATE PROBLEM
if (this.selectedStyle.child && this.selectedStyle.child.length)
this.selectedChildStyle = this.selectedStyle.child[0];
else
this.selectedChildStyle = null;
}
}
答案 1 :(得分:1)
将selectedStyle
定义为任何;
selectedStyle: any; // This is the change
class DataService {
styles: Object[];
selectedStyle: any; // This is the change
selectedChildStyle: Object;
constructor() {
this.styles = [{
"name": "Parent",
"child": {}
}];
this.selectedStyle = this.styles[0];
if (this.selectedStyle.child && this.selectedStyle.child.length)
this.selectedChildStyle = this.selectedStyle.child[0];
else
this.selectedChildStyle = null;
}
}