使用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
babeljest官网指了一条明路:使用ts-jest
在使用npx ts-jest config:init
初始化后jest.config.js果然不不报这个错了,但是遇到了window
对象无法查找到的问题:
ReferenceError: window is not defined
检查后发现ts-jest在初始化时把testEnvironment
属性设置为了node
,删去或改为默认值jsdom
即可开心地进行带有类型检查的测试了;
另外在安装完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"
}
}
网友评论