【问题标题】:Typescript type alias for enum枚举的打字稿类型别名
【发布时间】:2017-03-09 14:59:14
【问题描述】:

我的打字文件中有这个:

declare namespace Somatic {
    enum PropType {
        html,
        object,
        css
    }
}

在另一个文件 index.ts 中,我有一个较短的这个枚举别名:

type PropType = Somatic.PropType;

那我想在switch语句中使用别名枚举类型:

switch (propType) {
    case PropType.html:
        break;
    .
    .
    .
    }

但 Typescript 无法识别别名枚举类型值。这里有什么问题?

【问题讨论】:

    标签: javascript typescript enums alias


    【解决方案1】:

    您应该使用import 关键字而不是type

    import PropType = Somatic.PropType;
    

    有关导入别名声明 here 的更多信息。

    ** 如果您使用的是 babel-plugin-transform-typescript,则此语法 won't work 因为这是 typescript 唯一的导入形式。一般不推荐使用命名空间。

    【讨论】:

    • 请注意,如果您使用 Babel,这将不起作用,因为它不支持 import =
    • @JemarJones 添加了关于 babel 插件限制的注释
    【解决方案2】:

    在打字稿中,枚举既是类型又是映射。 您应该分别为类型和地图设置别名:

    type PropTypeEnum = Somatic.PropType;
    const PropType = Somatic.PropType;
    

    【讨论】:

      【解决方案3】:

      基本上,定义文件只是声明现有其他代码的类型。 TypeScript 中的枚举实际上是数字,而且您在其上构建的现有代码很可能不使用实际数字。更好的实现可能是只切换字符串;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-30
        • 1970-01-01
        • 2019-07-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多