babel无法识别ts常量枚举的问题

使用jest测试ts代码时使用了class插件:

@babel/plugin-proposal-class-properties

在其内部引用常量枚举类型变量时会引起错误:

SyntaxError: /....../types/index.d.ts: 'const' enums are not supported.

查阅babel文档后指出,babel不支持常量枚举,因为babel无法进行类型检查:

@babel/plugin-transform-typescript · Babel

babel

jest官网指了一条明路:使用ts-jest

在使用npx ts-jest config:init初始化后jest.config.js果然不不报这个错了,但是遇到了window对象无法查找到的问题:

ReferenceError: window is not defined

检查后发现ts-jest在初始化时把testEnvironment属性设置为了node,删去或改为默认值jsdom即可开心地进行带有类型检查的测试了;

testenvironment

另外在安装完ts-jest过程中遇到了无法找到tslib的问题,装一下即可:

npm i tslib -D

但是在ts-jest文档中并没有提及这个依赖,很是奇怪。

这里是所有在使用babel转ts时的注意事项

这里附上我配置ts+babel+jest开发npm包的最小依赖:

{
  "types": "lib/index.d.ts",
  "scripts": {
    "build": "tsc",
    "test": "jest",
    "clean": "rm lib/*.js lib/*.map lib/*.d.ts",
    "deploy": "npm run build && npm publish"
  },
  "devDependencies": {
    "@babel/preset-env": "^7.5.5",
    "@babel/preset-typescript": "^7.3.3",
    "@types/jest": "^24.0.15",
    "@types/node": "^12.6.8",
    "jest": "^24.8.0",
    "ts-jest": "^24.0.2",
    "tslib": "^1.10.0",
    "typescript": "^3.5.3"
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容