首页 > 解决方案 > tslint 方法返回类型文档

问题描述

我有两个 nodejs 项目具有相同的 package.json tsconfig.json 和 tslint.json 文件(只是副本)。当我在两个项目上调用 tslint 时,我得到了不同的结果。在第一个项目中,一切正常,但在第二个项目中,我得到了属性lint 错误的文档必须存在。

tsconfig.json:

{
"compilerOptions": {
    "module": "commonjs",
    "noImplicitAny": false,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "suppressImplicitAnyIndexErrors": true,
    "target": "ES6",        
    "moduleResolution": "node",
    "removeComments": false,
    "sourceMap": false,
    "noLib": false,
    "declaration": true,
    "lib": ["es5", "es6", "scripthost"],
    "outDir": "dist",
    "rootDir": "./"
},
"include": [
    "src/**/*",
    "test.ts"
    // "test/**/*",
    // "bdd/**/*.ts"
]    
}

tslint.json:

{
"defaultSeverity": "error",
"extends": [
    "tslint:recommended"
],
"jsRules": {},
"rules": {
    "completed-docs": [
        true,
        {
            "properties": {
                "privacies": [
                    "public",
                    "protected"
                ]
            },
            "methods": {
                "privacies": [
                    "public",
                    "protected"
                ]
            },
            "classes": true,
            "functions": true,
            "interfaces": true,
            "namespaces": true,
            "types": true                
        }
    ],
    "max-line-length": false,
    "no-trailing-whitespace": false,
    "max-classes-per-file": false,
    "array-type": false,
    "file-header": true,
    "only-arrow-functions": false,
    "object-literal-sort-keys": false
},
"rulesDirectory": []
}

包.json:

{


 "name": "testProj",
  "version": "18.9.0",
  "description": "",
  "author": {
    "name": "Me"
  },
  "license": "MIT",
  "engines": {
    "node": ">=4.8"
  },
  "scripts": {
    "lint": "tslint test.ts --project ./tsconfig.json"
  },
  "dependencies": {
    "@types/request": "^2.47.0",
    "request": "^2.87.0",
    "request-debug": "^0.2.0"
  },
  "devDependencies": {
    "@types/chai": "^4.0.10",
    "@types/mocha": "^2.2.44",
    "asposestoragecloud": "^1.0.5",
    "chai": "^4.1.2",
    "cross-env": "^5.1.4",
    "cucumber": "^3.0.0",
    "del": "^3.0.0",
    "gulp": "^4.0.0",
    "gulp-cucumber": "0.0.23",
    "gulp-typescript": "^4.0.1",
    "gulp-util": "^3.0.8",
    "mocha": "^4.0.1",
    "mocha-cases": "^0.2.1",
    "mocha-jenkins-reporter": "^0.4.0",
    "mocha-sinon": "^2.0.0",
    "sinon": "^4.1.3",
    "ts-node": "^4.0.2",
    "tslint": "^5.8.0",
    "typescript": "^2.7.1"
  }
}

测试.ts:

    /**
 * Some awesome class
 */
export class MyCheckClass {
    /**
     * Very usefull method
     * @param checkParameter Some unused parameter
     */
        public myCheckMethod(checkParameter: string): Promise<{ code: number, data: string }> {
            return new Promise((resolve, reject) => {
                resolve({code : 200, data: "My Success Data"});
            });
        }
    }

尝试添加 @ts-ignore - 没有帮助,尝试使用 @typedef 添加返回类型的文档 - 没用。使 linter 不检查此类情况的文档的正确方法是什么,或者至少如何为返回类型创建适当的文档?

PS。在第一个项目中,这种情况不会导致 linter 引发错误 - 一切都一样。但我发现 - 如果我使用全局安装的 tslint(刚刚卸载的 node_modules 文件夹) - 会出现同样的错误,但在npm install之后- 工作正常。

标签: node.jstypescripttslint

解决方案


您看到的“文档必须存在”投诉来自 TSLint(不是 TypeScript)。// @ts-ignore仅适用于 TypeScript 投诉(不是 TSLint),因此无济于事。

相反,您有几个选择:

  • 在对象内部禁用文件中的completed-docs规则(文档tslint.json"completed-docs": false"rules"
  • 使用// tslint:disable-next-line:completed-docs文档

对于上下文,TSLint 和 TypeScript 是两个独立的工具。TypeScript 是将.ts/.tsx文件转换为.js; TSLint 使用 TypeScript 扫描您的代码以查找问题。

至于为什么您在不同的项目中看到不同的 TSLint 行为,也许您的版本不同?completed-docs与 5.12 相比,TSLint 5.13 改变了运行方式。


推荐阅读