Static const in javascript (typescript) class



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

MyClassDefinition.MyConstant

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

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

我有一个不那么冗长的方式来实现这一目标?

您可以使用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.但是,对于常量,这通常不是问题。

最新更新