【问题标题】:Typescript Static Class打字稿静态类
【发布时间】:2019-06-27 14:08:33
【问题描述】:

我在 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

【问题讨论】:

  • @AbderrahimSoubaiElidrissi - 不,他们不是。
  • 你设置了myProperty,你可以阅读它:console.log(DbServiceInit.myProperty)。您无法看到您想要的内容,因为您的示例应该创建一个新实例来查看您想要的内容:jsfiddle.net/52qza8Lu

标签: javascript typescript static-methods


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢 :-)
猜你喜欢
  • 2016-06-13
  • 2017-10-27
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 2023-03-07
  • 2013-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多