我们正在使用TypeLite在TypeScript中生成枚举。
C#:
[TsEnum(Module = "CustomEnum")]
public enum TSEnum {
None,
Test
}
http://type.litesolutions.net/
在名为Enums.ts的文件中生成此代码:
namespace CustomEnum {
export enum TSEnum {
None = 0,
Test =1
}
}
默认情况下,TypeLite会生成const enum
,但为了能够获取TypeScript枚举条目const
的名称已被删除。这是通过编辑TypeLite.Net4.tt
并更改:
<# var ts = TypeScript.Definitions()
.WithReference("Enums.ts")
.ForLoadedAssemblies();
#>
对此:
<# var ts = TypeScript.Definitions()
.WithReference("Enums.ts")
.ForLoadedAssemblies()
.AsConstEnums(false);
#>
https://bitbucket.org/LukasKabrt/typelite/issues/96/allow-option-of-export-const-enum-to-be
https://www.typescriptlang.org/docs/handbook/enums.html#const-enums
我没有得到任何编译警告但在运行时我收到以下错误
未捕获的ReferenceError:未定义TSEnum
代码生成错误:
console.log(CustomEnum.TSEnum[CustomEnum.TSEnum.None]);
或者简单地说:
console.log(CustomEnum.TSEnum.None);
https://stackoverflow.com/a/36743651/3850405
如果我这样写的话一切正常:
enum TSEnum {
None = 0,
Test = 1,
}
console.log(TSEnum[TSEnum.None]);
我该怎么做才能解决这个问题?如果这会影响某些内容,我会使用webpack
进行捆绑。我试图导入枚举,但它没有任何区别。
import '../../../Scripts/Enums';
如果我手动将export
输入CustomEnum
然后导入枚举,则代码有效但CustomEnum.TSEnum
中使用TypeLite.Net4.d.tt
的声明无法再找到该属性。< / p>
import { TouchPoint } from '../../../Scripts/Enums';
Enums.ts:
export namespace CustomEnum {
export enum TSEnum {
None = 0,
Test =1
}
}
答案 0 :(得分:0)
无法找到一个好的解决方案,所以我决定创建一个可以在前端使用的新枚举对象。我从.AsConstEnums(false)
删除了TypeLite.Net4.d.tt
并创建了以下代码:
export enum TSEnumObject {
None = CustomEnum.TSEnum.None,
Test = CustomEnum.TSEnum.Test
}
console.log(TSEnumObject[TSEnumObject.None]);