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

时间:2018-12-13 19:40:53

标签: javascript typescript enums babeljs babel

是否可以使用enumbabel编译的文件中消耗@babel/preset-typescript

mymodule.d.ts

declare module 'mymodule' {
  export enum Fruit {
    apple = 'Apple',
  }
}

script.js

import { Fruit } from 'mymodule'

assert.equals(Fruit.apple === 'Apple')

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

除了声明一个单独的enum / constants文件并直接在两个位置(环境模块和脚本)中导入文件之外,还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

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

您可以使用声明文件描述另一个模块中发生的事情。在这种情况下,如果Fruit中存在mymodule,则可以在mymodule.d.ts中声明其形状-但是执行的不是声明,而是mymodule中的实际代码。 / p>

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