【问题标题】:Static const in javascript (typescript) class [duplicate]javascript(打字稿)类中的静态常量[重复]
【发布时间】:2019-09-05 19:39:29
【问题描述】:

我喜欢单个默认导出并通过类定义访问常量值,如下所示:

MyClassDefinition.MyConstant

我发现自己正在使用这种方法:

export default class MyClassDefinition {
    static get MyConstant(): number { return 1234 };
}

我有更简洁的方法来实现这一点吗?

【问题讨论】:

    标签: javascript typescript constants


    【解决方案1】:

    您可以使用 readonly 静态属性来代替 getter。类型也可以省略,因为 TypeScript 会从值中推断出来。

    export default class MyClassDefinition {
        static readonly MyConstant = 1234;
    }
    

    我还认为该类应该是 abstract,因为它不应该被实例化,但当然这会使它再次变得更加冗长。

    如果你只通过从其他文件导入类来引用它,你甚至可以完全去掉它的名字:

    export default class {
        static readonly MyConstant = 1234;
    }
    

    一种更简洁的方法是像这样导出一个对象:

    export default {
        MyConstant: 1234
    };
    

    请注意,使用最后一种方法,TypeScript 不会阻止您将 MyClassDefinition.MyConstant 重新分配给新值。与具有readonly 字段的基于类的解决方案不同。但是您可以使用as const 将文字属性的类型转换为readonly

    export default {
        MyConstant: 1234
    } as const;
    

    as const 也会尽可能地缩小这些属性的类型。所以MyConstant 将是1234 类型而不是number。但是,对于常量,这通常不是问题。

    【讨论】:

    • 如果 OP 没有类并且可以取消导出对象,那么export const MyConstant = 1234; 将是更明智的选择。
    • 这当然也是一种选择。我没有列出它,因为 OP 明确表示他们希望将它们作为默认导出。
    猜你喜欢
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2018-01-10
    • 2019-04-09
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多