我可以默认导出常量并从同一模块中键入别名吗?

时间:2017-05-22 17:46:03

标签: typescript constants

我有一个包含大量对象的项目,其中包含常量字符串值。

access_token

在许多情况下,这些字符串常量用作参数。我想确保只使用来自这些常量的字符串,所以我定义了一个类型别名。

localStorage

现在,我必须在我想要使用的地方重新定义这种类型的别名。我在同一模块中定义字符串值和类型别名,以便我可以这样做:

const StringLiterals = {
    a: "LetterA",
    b: "LetterB",
    c: "LetterC"
};

export default StringLiterals;

此外:

  • 我不想要两个不同的模块,一个包含类型,另一个包含字符串值。
  • 我不想要枚举,因为他们不允许您将标识符映射到字符串值;他们必须是数字。我还想避免大量的数组引用来在字符串和数值之间进行转换。

这一切都可能吗?

1 个答案:

答案 0 :(得分:3)

const StringLiterals = {
    a: "LetterA" as "LetterA",
    b: "LetterB" as "LetterB",
    c: "LetterC" as "LetterC"
};

type StringLiterals = (keyof StringLiterals)[keyof typeof StringLiterals];

export default StringLiterals;