Словарь внутри класса? - PullRequest
       3

Словарь внутри класса?

0 голосов
/ 25 января 2019

Я пытаюсь создать словари / объекты внутри моего класса javascript и запустить его через nodejs, но я получаю эту ошибку:

params.js: 4
costPerHr = {

          ^

SyntaxError: неожиданный токен =

Мой объект выглядит так:

module.exports = class Params {
  constructor() {}

  costPerHr = {
    internal: 100,
    shore: 50,
  };

  hoursPerMonth = 160;

  swhwMultiplier = {
    2: 280 / hoursPerMonth,
    5: 470 / hoursPerMonth,
  };
};

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Я не верю, что используемый вами синтаксис еще доступен в JavaScript.

Существует предложение ECMAScript на уровне 3 - "Поля классов" Даниэля Эренберга и Джеффа Моррисона для добавления этой функции.

https://github.com/tc39/proposal-class-fields

Тем временем вам придется прибегнуть к добавлению сеттеров / геттеров или установке полей в конструкторе (как указал @Oliver!)

Пример с использованием методов получения класса:

module.exports = class Params {
    constructor() {}

    get costPerHr() {
        return {
            internal: 100,
            shore: 50,
        }
    }

    get hoursPerMonth() { 
        return 160; 
    }

    get swhwMultiplier() { return {
        2: 280 / hoursPerMonth,
        5: 470 / hoursPerMonth,
    };}

    // Add a static getter
    static get my_static() { 
        return 160; 
    }
};

И затем доступ как:

console.log("Cost per hour: ", params.costPerHr);
0 голосов
/ 25 января 2019

Для установки свойств в классах, вы должны установить их в конструкторе:

module.exports = class Params {
    constructor() {
        this.costPerHr = {
            internal: 100,
            shore: 50,
        };

        this.hoursPerMonth = 160;

        this.swhwMultiplier = {
            2: 280 / this.hoursPerMonth,
            5: 470 / this.hoursPerMonth,
        };
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...