Typescript枚举类型别名

11

我在我的类型文件中有这个:

declare namespace Somatic {
    enum PropType {
        html,
        object,
        css
    }
}
在另一个名为index.ts的文件中,我对这个枚举类型使用了更短的别名:
type PropType = Somatic.PropType;

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

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

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

3个回答

21
你应该使用import关键字而不是type
import PropType = Somatic.PropType;

有关导入别名声明的更多信息在这里

** 如果您正在使用babel-plugin-transform-typescript,则此语法将不起作用,因为这是 TypeScript 的唯一导入形式。通常不建议使用命名空间。


请注意,如果您正在使用Babel,这将无法工作,因为它不支持import = - Jemar Jones
1
@JemarJones 添加了关于 Babel 插件限制的注释。 - Aleksey L.

8
在TypeScript中,枚举既是类型也是映射。你应该分别为类型和映射设置别名:
type PropTypeEnum = Somatic.PropType;
const PropType = Somatic.PropType;

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接