Как получить доступ к переменной в классе в json - PullRequest
0 голосов
/ 06 мая 2020

У меня есть абстрактный класс в fileA:

export abstract class BtAction {
  public name: string;
  public icon: string;
  public cmd: string;
  public cmdResponse: string;
  public successMsg: string;
  public errorMsg: string;
  public device: any;

  ...
}

И JSON в fileB:

export const BtActionList = {
    open: class ActionOpen extends BtAction {
        constructor(toast: ToastController,
                    private ble: BLE) {
            super(toast);
            this.name = "Open";
            this.cmd =  "0x3A21";
            this.cmdResponse = "3a01";
            this.successMsg = "successMsg";
            this.icon = "log-in";
            this.errorMsg = "error";
        }

        ...
    },
    stock: class ActionStock extends BtAction {
        constructor(toast: ToastController,
                    private ble: BLE) {
            super(toast);
            this.name = "Stock";
            this.cmd =  "0x3A21";
            this.cmdResponse = "3a01";
            this.successMsg = "successMsg";
            this.icon = "log-in";
            this.errorMsg = "error";
        }

        ...
    }
}

Мой файл C import BtActionList и я хочу l oop для отображения панели вкладок:

import { BtActionList } from './utils/bt-action-list';

Но когда я помещаю console.log, я нигде не вижу свою переменную:

Inspector моего объекта

Как я могу получить доступ к своим переменным?

Спасибо!

1 Ответ

0 голосов
/ 06 мая 2020

Я думаю, что вам может понадобиться следующее:

export const BtActionList: {open: BtAction, stock: BtAction} = {
    open: {
        name: "Open",
        cmd:  "0x3A21",
        cmdResponse: "3a01",
        successMsg: "successMsg",
        icon: "log-in",
        errorMsg: "error"
    },
    stock: {
        name: "Stock",
        cmd:  "0x3A21",
        cmdResponse: "3a01",
        successMsg: "successMsg",
        icon: "log-in",
        errorMsg: "error"
    }
};

В том виде, в каком вы это делали прямо сейчас, классы не создаются и в результате не создаются, чтобы иметь доступ к любой переменной на Это. Если вам действительно нужен класс, вы можете создать его экземпляр следующим образом:

class ActionOpen extends BtAction {
    constructor(toast: ToastController,
                private ble: BLE) {
        super(toast);
        this.name = "Open";
        this.cmd =  "0x3A21";
        this.cmdResponse = "3a01";
        this.successMsg = "successMsg";
        this.icon = "log-in";
        this.errorMsg = "error";
    }
}

class ActionStock extends BtAction {
    constructor(toast: ToastController,
                private ble: BLE) {
        super(toast);
        this.name = "Stock";
        this.cmd =  "0x3A21";
        this.cmdResponse = "3a01";
        this.successMsg = "successMsg";
        this.icon = "log-in";
        this.errorMsg = "error";
    }
}

export const BtActionList = {
    open: new ActionOpen(/* pass in your initializers */),
    stock: new ActionStock(/* pass in your initializers */)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...