Enums 使用全局名称声明枚举

Enums 使用全局名称声明枚举,enums,typescript,Enums,Typescript,我有一个Javascript函数,它接受一个数字。还有一些顶级常量: var FOO = 1; var BAR = 2; 只有使用这些常量中的一个来调用这个函数才有意义 我想使用enum为此函数创建类型安全接口: declare enum MyType { FOO, BAR } interface MyClass { process(MyType type); } 但此代码在js文件中输出MyType.FOO。我需要它只输出FOO,但在typescript代码中仍然

我有一个Javascript函数,它接受一个数字。还有一些顶级常量:

var FOO = 1;
var BAR = 2;
只有使用这些常量中的一个来调用这个函数才有意义

我想使用enum为此函数创建类型安全接口:

declare enum MyType {
    FOO,
    BAR
}

interface MyClass {
    process(MyType type);
}
但此代码在js文件中输出
MyType.FOO
。我需要它只输出
FOO
,但在typescript代码中仍然是类型安全的。可能吗

// Version A
const enum _MyType {
    FOO,
    BAR
}
let FOO = _MyType.FOO;
let BAR = _MyType.BAR;

不管怎样

function fn(x: _MyType) { /* ... */ }

fn(FOO); // OK
fn('quack'); // Error
function fn(x: _MyType) { /* ... */ }

fn(FOO); // OK
fn('quack'); // Error