javascript - typescript 静态类

标签 javascript typescript static-methods

我在 typescript 中确实有一个静态类,它具有如下所示的异步构建方法:

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

最佳答案

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

另外,您不是声明静态属性。您在运行时添加一个。我必须检查提议的规范文本才能确定,但​​如果类的再现仅包括声明的静态属性,而不是在运行时添加的属性,我也不会感到惊讶。

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

关于javascript - typescript 静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56792918/

相关文章:

javascript - 为什么我不能走子组件的路线?

node.js - browser.d.ts 对 Edge Web 扩展 API browser.runtime.* 的依赖

node.js - 剧作家自动化无法绕过位置弹出窗口

C# 静态方法和属性 : Object reference not set to an instance of an object

Python:如何为程序创建积极的测试?

javascript - Express - 如何获取序列化表单

javascript - 显示名称而不是值

python - 在python中传递静态方法

javascript - 检查是否在不使用 JQUERY 的情况下加载了另一个脚本

javascript - 如何将自定义模块加载与 webpack 集成?