typescript-eslint&ts-jest(六)

tslint到eslint

缘由vue

  • tslint执行规则的方式存在一些架构问题,从而影响性能,而修复这些问题会破坏现有规则
  • eslint性能更好,社区一般拥有eslint的规则配置(vue或react),而不会拥有tslint的规则配置; typescript和eslint
  • ts : 类型检查、语法转换
  • eslint:代码风格

typescript-eslintnode

  • 有官方血统,为eslint专门提供了解析eslint的编译器
开始:
npm i eslint
npm i typescript-eslint/eslint-plugin  // 识别ts的特殊语法
npm i typescript-eslint/parser // 为eslint提供解析器
// package.json
{
    "script": {
        "lint": "eslint src --ext .js,.ts" 
        "test": "jest"
    }
}
// .eslintrc.json
{
    "parser": "typescript-eslint/parser", // 为eslint指定解析器、
    "plugins": ["@typescript-eslint"], // 指定插件
    "parserOptions": {
        "project": "./tsconfig.json", // 有一些规则是要使用类型信息的
    }                   // 能够利用tsconfig里面的类型信息
    "extends": [
        "plugin:@typescript-eslint/recommended", // 能够指定规则,官方推荐
    ],
    "rules": {
        "@typescript-eslint/no-inferrable-types": "off"
    }
    }
}

除了使用脚本,能够按照eslint插件辅助开发 vscode > eslintreact

babel-eslinttypescript-eslinttypescript

  • babel-eslint: 支持ts,没有额外的语法检查,抛弃了ts,不支持类型检查
  • typescript-eslint: 基于ts的AST,支持建立基于类型信息的规则(tsconfig) 建议:
  • 二者底层机制不同,不要一块儿使用
  • babel体系建议使用babel-eslint,不然能够使用typescript-eslint

使用jest进行单元测试

ts-jest和babel-jestnpm

// ts-jest
- npm i jest ts-jest -D
- npx ts-jest config:init

// jest.config.js
module.exports = {
    preset: 'ts-jest',
    testEnvironment: 'node'
}
// babel-jest 
npm i -D jest babel-jest @types/jest @types/node
// 只编译,不进行类型检查,类型检查须要启动单独的脚本; npm run type-check
相关文章
相关标签/搜索