Коллекция перечислений в TypeScript - PullRequest
0 голосов
/ 27 апреля 2020

Я работаю с Vue. js, поэтому вопрос касается Vue компонентов. В моем коде есть примеры, где я хотел бы сравнить что-нибудь с перечислением. Это прекрасно работает в части скрипта файла. vue, но не в части html, что означает:

<template>
    <v-app>
        {{MyEnum.EnumMemberOne}}
    </v-app>
</template>

может вызвать ошибку: [Vue warn]: Property or method "MyEnum" is not defined on the instance but referenced during render. ...

Так Я должен сделать это в своем скрипте, чтобы получить доступ к моему перечислению:

import {MyEnum} from "@/types";

@Component({
    components: {}
})
export default class App extends Vue {
    myEnum = MyEnum;
}

Затем я могу просто обратиться к своему перечислению, используя myEnum в пределах части html. Не слишком раздражает, но моя проблема в том, что у меня будет много перечислений, и я не хочу вручную создавать переменные для каждого перечисления в каждом компоненте.

Так что я хотел бы сделать в основном у меня есть коллекция перечислений, так что независимо от того, сколько у меня перечислений и какие перечисления я действительно хочу использовать в каждом компоненте, они все доступны.

Так что в моем файле types.ts (где Я определяю все интерфейсы и перечисления), я хотел бы сделать что-то вроде этого:

export enum MyEnum1 {
    EnumMemberOne,
    EnumMemberTwo,
}

export enum MyEnum2 {
    EnumMemberOne,
    EnumMemberTwo,
}

export interface EnumCollection {
    MyEnum1: MyEnum1;
    MyEnum2: MyEnum2;
}

Чтобы в каждом компоненте я мог просто сделать это: enumCollection = EnumCollection;

И использовать это в части html вот так:

<template>
    <v-app>
        {{enumCollection.MyEnum1.EnumMemberOne}}
    </v-app>
</template>

Возможно ли это? Если нет, то есть ли лучший способ «собрать» все возможные перечисления в одном месте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...