Как объявить публичное перечисление в typescript?

Для следующего класса:

module LayoutEngine {

    enum DocumentFormat {
        DOCX = 1
    };

    export class DocHeader {

        public format : DocumentFormat;
    }
}

У меня есть два вопроса:

  • Вышеупомянутая ошибка компиляции, в которой говорится: "Публичное свойство" формат "экспортируемого класса имеет или использует закрытый тип" DocumentFormat "." Но объявление публичности до перечисления также ошибка. Итак, как мне это сделать?
  • Есть ли способ разместить объявление enum внутри класса? Просто имя модуля не подходит для пространства имен, так как у меня много классов в этом модуле.

thanks - dave

Ответы

Ответ 1

Вышеприведенная ошибка компиляции, в которой говорится, что "Формат открытого свойства" экспортируемого класса имеет или использует закрытый тип "DocumentFormat".

Просто экспортируйте:

module LayoutEngine {

    export enum DocumentFormat {
        DOCX = 1
    };

    export class DocHeader {

        public format : DocumentFormat;
    }
}

Есть ли способ разместить объявление enum внутри класса?

Тип enum typescript должен находиться на уровне модуля (файл или внутри модуля). Конечно, если вы хотите, чтобы внутри класса просто использовал json-объект

module LayoutEngine {
    export class DocHeader {
        DocumentFormat = {
            DOCX: 1
        };

        public format : number;
    }
}