使用 @babel/preset-typescript 从环境 TypeScript 模块中使用枚举?

Ada*_*son 3 javascript enums typescript babeljs

是否可以使用enum正在转译的文件中的an ?babel@babel/preset-typescript

mymodule.d.ts

declare module 'mymodule' {
  export enum Fruit {
    apple = 'Apple',
  }
}
Run Code Online (Sandbox Code Playgroud)

script.js

import { Fruit } from 'mymodule'

assert.equals(Fruit.apple === 'Apple')
Run Code Online (Sandbox Code Playgroud)

Fruit在这种情况下将是未定义的,因为babel不知道环境声明。

除了声明一个单独的枚举/常量文件并直接在两个地方(环境模块和脚本)导入这些文件之外,还有其他方法可以解决这个问题吗?

Kar*_*ski 5

您无法从声明文件 ( *.d.ts) 导入可执行代码。

\n\n

您可以使用声明文件来描述另一个模块中发生的情况。在这种情况下,如果Fruit存在于mymodule您可以在 \xe2\x80\x94 中声明其形状mymodule.d.ts,但它不是执行的声明,而是位于中的实际代码mymodule

\n\n

换句话说,Fruit必须存在于*.ts*.js文件中才能在运行时使用。

\n