node.js - 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之后- 工作正常。
解决方案
您看到的“文档必须存在”投诉来自 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 改变了运行方式。
推荐阅读
- python - ByBit API:有没有办法在开仓后下单止盈止损单?
- java - Java - 在方法中允许一个线程而无需等待
- sql-server - 如何选择所有参数来运行报告,但让它们独立运行
- javascript - 更新状态时如何修复 React.useEffect 和 useCallback 循环循环?
- xamarin.forms - Xamarin Telerik RadListview 在 iOS 中不绑定
- apache-spark - Apache Spark:长时间随机读取阻塞时间。为什么?
- slimselect - 如何在 Ajax 控制的苗条选择中加载初始值(并选择它)?
- javascript - 一旦更改了从中提取的数组,如何在 Javascript 中重置数据属性的值?
- c++ - UltiSnips#Edit 尝试时出错:UltiSnipsEdit
- google-apps-marketplace - 无法找到未列出应用的直接网址