枚举的打字稿类型别名

Typescript type alias for enum

我的打字文件中有这个:

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

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

type PropType = Somatic.PropType;

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

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

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

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

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

import PropType = Somatic.PropType;

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

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

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

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