eum的Typescript类型别名

prm*_*mph 5 javascript enums alias typescript

我在我的打字文件中有这个:

declare namespace Somatic {
    enum PropType {
        html,
        object,
        css
    }
}
Run Code Online (Sandbox Code Playgroud)

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

type PropType = Somatic.PropType;
Run Code Online (Sandbox Code Playgroud)

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

switch (propType) {
    case PropType.html:
        break;
    .
    .
    .
    }
Run Code Online (Sandbox Code Playgroud)

但是Typescript无法识别别名的枚举类型值.这有什么不对?

Ale*_* L. 9

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

import PropType = Somatic.PropType;
Run Code Online (Sandbox Code Playgroud)

有关导入别名声明的更多信息,请参见此处


小智 8

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

type PropTypeEnum = Somatic.PropType;
const PropType = Somatic.PropType;
Run Code Online (Sandbox Code Playgroud)


Pau*_*BGD 0

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