我们最近将 Angular 2 项目升级到了@angular/cli1.0 版本。我们还tslint从升级2.x到5.x。tslint现在我们在设计时收到以下错误(在 VSCode 输出终端中)。
验证时找不到模块“tslint/lib/lint”。
我尝试遵循几个 github 线程建议,包括删除已弃用的规则和添加新规则、回滚tslint到以前的版本以及完全卸载并重新安装@angular/cli和关联的模块。
然而,这个错误继续出现,并且阻止了tslint我们的代码的评估。
之前的 SO 帖子引用了相同的错误消息,但显然出于不同的原因;接受的答案没有解决我的问题: 错误:尝试扩展 tslint-microsoft-contrib 时找不到模块“tslint/lib/lint”
我需要忽略所有包含 spec int 名称的文件,例如 MyStuff.spec.ts
如何让 tslint 忽略此类文件?
我正在使用 Visual studio 2017 (15.5.1) 并尝试让 tsLint 正常工作。由于某种原因,我从 node_modules 中的所有文件以及我的任何声明 (*.d.ts) 文件中收到 linting 错误(在 Visual Studio 错误列表 (Build+intellisense) 中)。我所做的一切似乎都无法解决这个问题。我想从我的错误中排除这些文件。似乎到处都认为这是可能的,但我发现的大多数例子都不是与视觉工作室打交道,我想知道是否还缺少其他一些额外的设置。以下是我的相关文件。
tslint.json:
{
"extends": [
"tslint:latest",
"tslint-config-prettier"
]
}
Run Code Online (Sandbox Code Playgroud)
tsconfig.json:
{
"compilerOptions": {
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"noEmitHelpers": true,
"noEmitOnError": true,
"noImplicitAny": false,
"allowUnusedLabels": true,
"target": "es5",
"sourceMap": true,
"strictNullChecks": false,
"removeComments": true,
"declaration": false,
"plugins": [ { "name": "tslint-language-service" } ],
"lib": [
"dom",
"es6",
"scripthost",
"es5",
"es2015",
"es2015.promise"
],
"types": [
"angular-ui-bootstrap", …Run Code Online (Sandbox Code Playgroud) 遗憾的是,这个有效的代码被 TSLint 的默认设置认为是疏忽的:
export const NO_FLAG: number = 0x0000;
export const DESTROY_FLAG: number = 0x0001;
export const NULL_FLAG: number = 0x0100;
export const START_FLAG: number = 0x0200;
export const STOP_FLAG: number = 0x0400;
export function getPackedFlags(destroy: boolean,
nullThing: boolean,
start: boolean,
stop: boolean): number {
const bitFlags: number = ((destroy) ? DESTROY_FLAG: NO_FLAG) |
((nullThing) ? NULL_FLAG: NO_FLAG) |
((start) ? START_FLAG: NO_FLAG) |
((stop) ? STOP_FLAG: NO_FLAG);
return bitFlags;
}
Run Code Online (Sandbox Code Playgroud)
执行上述操作会产生这种输出:
tslint --project ./tsconfig.json --format verbose --force
ERROR: (no-bitwise) …Run Code Online (Sandbox Code Playgroud) 我的应用程序的结构如下:
<body>
<header>[...]</header>
<main>[...]</main>
<footer><app-footer></app-footer></footer>
</body>
Run Code Online (Sandbox Code Playgroud)
因为我不想要不必要的 DOM 元素,所以我更喜欢声明app-footer为属性,这样我就可以像这样声明页面:
<body>
<header>[...]</header>
<main>[...]</main>
<footer app-footer></footer>
</body>
Run Code Online (Sandbox Code Playgroud)
但如果我这样做,执行时会收到以下错误消息ng lint
组件“AppFooterComponent”的选择器应用作元素(https://angular.io/styleguide#style-05-03)
我认为本案是该规则的合理例外。你同意?如果是这样,我如何声明这个特定组件作为该规则的例外?
需要配置哪些设置才能使用vs 代码编辑器中的prettier 插件在打字稿文件的类中的方法声明前后添加新行?
我们如何通过在.prettierrc或tslint.json文件中写入任何规则来实现?
目前的行为是
function one(){
// some code
}
function two(){
// some code
}
Run Code Online (Sandbox Code Playgroud)
预期结果
function one(){
// some code
}
function two(){
// some code
}
Run Code Online (Sandbox Code Playgroud)
我在tslint.json 中尝试过以下行
"lines-between-class-methods": "true"
Run Code Online (Sandbox Code Playgroud)
但没有用
我正在使用 TypeScript 和 React-Redux 构建一个 React Native 应用程序。
我使用 connect 连接了我的组件:
import { addTodo } from "../../redux/actions";
export interface Props {
addTodo: (todo: Todo) => void;
}
// ... component code
handleAdd = (todo: Todo) => {
const { addTodo, ... } = this.props; // ... = more destructuring
// some code ... eventually:
addTodo(todo);
}
export default connect(
mapStateToProps,
{ addTodo }
)(MyComponent);
Run Code Online (Sandbox Code Playgroud)
现在的问题是,TSLint 抱怨阴影变量:
[tslint] Shadowed name: 'addTodo'
Run Code Online (Sandbox Code Playgroud)
这感觉像是 TypeScript 没有识别 React-Redux 功能的错误。我的意思是 Redux 文档中教导以这种方式将 dispatch 映射到 props。 …
我在一个使用knockout.js(使用TypeScript)的项目中,由于knockout observables 只是函数,人们经常会遇到length错误地访问observable 函数的length属性而不是访问他们自定义对象模型的属性的问题。
是否有一些 tslint 规则可以禁止使用某种类型的特定属性?我见过“禁止”规则,但这似乎只适用于禁止使用函数和方法,而不适用于属性。
clearFile()
{
(<HTMLInputElement>document.getElementById('uploadFile')).value = "";
}
Run Code Online (Sandbox Code Playgroud)
给
[tslint] misplaced opening brace
Run Code Online (Sandbox Code Playgroud)
.
如果我在同一行函数中使用左大括号,它不会给我警告
clearFile(){
(<HTMLInputElement>document.getElementById('uploadFile')).value = "";
}
Run Code Online (Sandbox Code Playgroud)
这条规则称为“一行”规则以及如何在 TSLint 中配置它来处理第一种类型的大括号样式
提前致谢
我的输出ng test如下:
> ng test
24 12 2019 14:20:07.854:WARN [karma]: No captured browser, open http://localhost:9876/
24 12 2019 14:20:07.860:INFO [karma-server]: Karma v4.4.1 server started at http://0.0.0.0:9876/
24 12 2019 14:20:07.860:INFO [launcher]: Launching browsers ChromeNoSandbox with concurrency unlimited
24 12 2019 14:20:07.865:INFO [launcher]: Starting browser ChromeHeadless
app/shared/forms/templates/templates.component.ts:11:1 - error TS6133: 'MatDialog' is declared but its value is never read.
11 import { MatDialog } from '@angular/material';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24 12 2019 14:20:11.633:INFO [HeadlessChrome 79.0.3945 (Mac OS X 10.15.2)]: Connected on …Run Code Online (Sandbox Code Playgroud) tslint ×10
typescript ×6
angular ×3
bitwise-or ×1
eslintrc ×1
lint ×1
prettier ×1
react-redux ×1
reactjs ×1
redux ×1
tsconfig ×1
unit-testing ×1