美文网首页莫名其妙
babel无法识别ts常量枚举的问题

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

作者: DADFAD | 来源:发表于2019-07-25 11:46 被阅读0次

    使用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"
      }
    }
    

    相关文章

      网友评论

        本文标题:babel无法识别ts常量枚举的问题

        本文链接:https://www.haomeiwen.com/subject/qsncrctx.html