Typescript Статический класс - PullRequest
1 голос
/ 27 июня 2019

У меня есть статический класс в машинописи, который имеет метод асинхронной сборки, подобный следующему:

export default class DbServiceInit {
    public static myProperty: string;

    public static build = async(): Promise<void> => {
            try {
                DbServiceInit.myProperty = "ssss";
                console.log('My Static Class', DbServiceInit)
            } catch (error) { console.error(error); }
    }
}

Когда я звоню так:

await DbServiceInit.build();

В нем записывается пустой класс:

My Static Class class DbServiceInit {
}

Буду признателен за любую помощь, так как я не могу понять, почему это происходит, поскольку я ожидал бы следующее:

My Static Class class DbServiceInit {
       myProperty: 'ssss'
    }

Ссылка на игровую площадку

1 Ответ

1 голос
/ 27 июня 2019

Помните, что во время выполнения вы имеете дело с JavaScript, а не с TypeScript.Поведение во время выполнения зависит от движка JavaScript и от того, какой целью компиляции вы пользуетесь для TypeScript, например, ~ ES5 или ~ ES2015, но вы, очевидно, нацеливаетесь на ES2015 +), и при реализации consoleиспользуется, но в настоящее время нет стандартного способа показать статическое свойство в синтаксисе class (один идет , но еще не пришел), поэтому вы видите толькочто может быть корректно представлено движком JavaScript.

Отдельно вы не объявляете статическим свойством.Вы добавляете один во время выполнения.Я должен был бы проверить предложенный текст спецификации, чтобы быть уверенным, но меня не удивит, если представление класса будет включать только объявленные статические свойства, а не добавленные во время выполнения.

Свойство есть, оно просто не отображается в этой сериализации.

...