我在TypeScript中有一个类如下:
OOP
现在,在运行时,我的脚本会加载一个包含许多节点的.json文件。每个节点都有不同的属性。我为每个加载的节点创建一个新的Node类Object,并将特定加载节点的属性添加到节点对象中。
如何使用上面的Node类实现此目的?现在我正在使用任何来使其正常工作:
export class Node {
id: number;
}
“data.json”的示例数据:
export class Main {
private nodes: any[] = []; // I'd like to use the class Node instead of any here
constructor() {
// load json
var loadedNodes = jsonload("data.json");
// okay, json loaded
// now load the json into objects
for (var nodeIndex in loadedNodes) {
// check whether the attribute that you are finding is from the object itself and not from up the prototype chain
if (loadedNodes.hasOwnProperty(nodeIndex)) {
var loadedNode = loadedNodes.nodes[nodeIndex];
var node: any = {}; // I'd like to use the class Node instead of any here
for (var key in loadedNode) {
if (loadedNode.hasOwnProperty(key)) {
node[key] = loadedNode[key]; // put the attribute into the node object
}
}
this.nodes.push(node);
}
}
}
这可能吗?
答案 0 :(得分:0)
问题出在var node: any = {};
正在创建文字对象而不是Node
的实例。
您可以通过以下方式使用Node
课程:
var node = new Node();
或者您可以将Node
类改为接口:
interface INode {
// Needs to be optional if the object is going to be empty at first.
id?: string;
}
// Then define the `node` variable with the interface:
var node: INode = {};