枚举的打字稿类型别名
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;
我的打字文件中有这个:
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;