打字稿静态类

时间:2019-06-27 14:08:33

标签: javascript typescript static-methods

我的打字稿中确实有一个静态类,该类具有如下异步构建方法:

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'
    }

Playground link

1 个答案:

答案 0 :(得分:1)

请记住,在运行时,您使用的是JavaScript,而不是TypeScript。运行时行为会因JavaScript引擎以及TypeScript的编译目标而异,例如〜ES5或〜ES2015,但您显然是针对正在使用的console的实现,但目前还没有标准一种以class语法显示静态属性的方法(一个is coming,但现在还没有),所以您只能看到JavaScript引擎可以有效表示的内容。

另外,您不是声明静态属性。您要在运行时添加一个。我必须检查建议的规范文本以确保确定,但是如果该类的表示形式仅包含声明的静态属性,而不是在运行时添加的静态属性,这也不会令我感到惊讶。

该属性在那里,只是没有在序列化中显示。