【问题标题】:TypeScript: using enum elements without specifying enum nameTypeScript:使用枚举元素而不指定枚举名称
【发布时间】:2018-05-27 01:33:50
【问题描述】:

我有一个枚举,我想在几个地方使用它。 让我们说这样的枚举:

export enum MyEnum {
    MY_VALUE,
    MY_SECOND_VALUE
}

每次使用都必须在值前指定枚举名称,例如:

MyEnum.MY_VALUE

问:是否可以以不需要指定名称的方式导入枚举?

我想直接使用该值:

MY_VALUE

在java世界中它被称为静态导入。但我还没有找到类似 TypeScript 的东西。

我的 TypeScript 版本是 2.5.3。

【问题讨论】:

    标签: javascript typescript import enums


    【解决方案1】:

    Typescript 中没有静态导入的语法。

    您可以将值成员分配给一个常量并使用它:

    const  MY_VALUE = MyEnum.MY_VALUE;
    

    如果您在导出模块中将枚举值定义为常量,则可以轻松地将值导入其他任何需要使用它们的地方:

    // enumModule .ts
    export  enum MyEnum {
        MY_VALUE,
        MY_SECOND_VALUE
    }
    
    export const  MY_VALUE = MyEnum.MY_VALUE;
    export const  MY_SECOND_VALUE = MyEnum.MY_SECOND_VALUE;
    
    // Other file.ts
    import { MY_SECOND_VALUE, MY_VALUE } from './enumModule'
    

    【讨论】:

    • 谢谢。有用。在 TypeScript 世界中实现这些东西是一种好习惯吗?老实说,它看起来有点丑。如果我声明这样的常量,那么枚举的意义何在?我本来可以声明字符串常量。
    • 据我所知,这不是坏习惯,虽然我没有看到它被普遍使用。导入在 TS/JS 中的工作方式的优点是导入器对它们导入的内容是明确的,因此不会由此产生不必要的冲突。使用 Enum 的优点是您可以将函数输入限制为该枚举,而不必指定所有常量类型:function c (p : MyEnum) {}function c2 (p : typeof MY_VALUE | typeof MY_SECOND_VALUE) {}
    猜你喜欢
    • 2012-11-05
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多