在TypeScript中加载实例变量形成一个文件



代码如下:

import fs = require('fs');
export interface Answer {
  order: number,
  text: string
}
export class Config {
  responses:Answer[];
  timestamp_column: string;
  name_column: string
  fromJSONFile(fileName: string) {
    var fileString = fs.readFileSync(fileName);
    var parsedFile = JSON.parse(fileString.toString());
    this.responses = parsedFile.responses;
    this.timestamp_column = parsedFile.timestamp_column;
    this.name_column = parsedFile.name_column;
  }
  mapAnswerToNum(answer:string):number {
    for (var a of this.responses) {
      if (a.text == answer) { return a.order;}
    }
    throw new Error(`Invalid response string ${answer}`);
  }
}

在这个文件中读:

{
  "responses": [
    { "value": 0, "text": "At a loss to explain it..."},
    { "value": 1, "text": "Have a vague sense..."},
    { "value": 2, "text": "Pretty good handle on it..."},
    { "value": 3, "text": "Confident that I understand it..."},
    { "value": 4, "text": "Feel pretty expert at it..."}
  ],
  "timestamp_column": "Timestamp",
  "name_column": "First Name"
}

请注意,我正在从fromJSONFile中对应的JSON字段一个接一个地复制每个实例变量。考虑到我小心地确保类的结构与JSON文件完全相同,这似乎是重复的。有没有更好的办法?

使用Object.assign

fromJSONFile(fileName: string) {
    var fileString = fs.readFileSync(fileName);
    var parsedFile = JSON.parse(fileString.toString());
    Object.assign(this,parsedFile);
}

相关内容

最新更新