tslint 方法 return 类型文档

tslint method return type documentation

我有两个 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": []
}

package.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"
  }
}

test.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 添加 return 类型的文档 - 没用。 让 linter 不检查此类情况的文档的正确方法是什么,或者至少如何为 return 类型创建适当的文档?

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

您看到的 "documentation must exist" 投诉来自 TSLint(而非 TypeScript)。 // @ts-ignore 仅适用于 TypeScript 投诉(不适用于 TSLint),因此无济于事。

相反,您有几个选择:

  • 禁用 completed-docs rule in your tslint.json file with a "completed-docs": false inside the "rules" object (docs)
  • 使用// tslint:disable-next-line:completed-docs (docs)

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

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