使用jest測(cè)試ts代碼時(shí)使用了class插件:
@babel/plugin-proposal-class-properties
在其內(nèi)部引用常量枚舉類型變量時(shí)會(huì)引起錯(cuò)誤:
SyntaxError: /....../types/index.d.ts: 'const' enums are not supported.
查閱babel文檔后指出,babel不支持常量枚舉,因?yàn)閎abel無法進(jìn)行類型檢查:
@babel/plugin-transform-typescript · Babel

babel
jest官網(wǎng)指了一條明路:使用ts-jest
在使用npx ts-jest config:init初始化后jest.config.js果然不不報(bào)這個(gè)錯(cuò)了,但是遇到了window對(duì)象無法查找到的問題:
ReferenceError: window is not defined
檢查后發(fā)現(xiàn)ts-jest在初始化時(shí)把testEnvironment屬性設(shè)置為了node,刪去或改為默認(rèn)值jsdom即可開心地進(jìn)行帶有類型檢查的測(cè)試了;
另外在安裝完ts-jest過程中遇到了無法找到tslib的問題,裝一下即可:
npm i tslib -D
但是在ts-jest文檔中并沒有提及這個(gè)依賴,很是奇怪。
這里是所有在使用babel轉(zhuǎn)ts時(shí)的注意事項(xiàng)。
這里附上我配置ts+babel+jest開發(fā)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"
}
}