莫名其妙

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

2019-07-25  本文已影响0人  DADFAD

使用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"
  }
}
上一篇下一篇

猜你喜欢

热点阅读