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

标签 javascript typescript enums babeljs

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

mymodule.d.ts

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

script.js

import { Fruit } from 'mymodule'

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

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

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

最佳答案

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

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

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

关于javascript - 使用@babel/preset-typescript 从环境 TypeScript 模块中使用枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53768978/

相关文章:

java - Java中关于集合、枚举和迭代器的困惑

javascript - 如何删除有问题的服务 worker ,或实现 "kill switch"?

javascript - 将 PHP 数组显示为动画?

html - 类型 'select' 上不存在属性 '{}'

javascript - 如何在 JavaScript 中为 setInterval() 设置自定义时间?

swift - 什么决定了协议(protocol)一致性的优先级?

java - 是否可以将枚举属性的空值存储到数据库中?

javascript - 如果包含在 <em> 标签中则触发链接

javascript - 使用 AngularJS 比较和交错变量以进行编辑

javascript - 如何更改 Material UI 字体的颜色?