TSLint - 防止错误:密钥未按字母顺序排序

Posted

技术标签:

【中文标题】TSLint - 防止错误:密钥未按字母顺序排序【英文标题】:TSLint - Preventing error: The key is not sorted alphabetically 【发布时间】:2018-01-29 06:24:51 【问题描述】:

我正在使用 Ionic2 / Cordova / Typescript / Angular 做一个测试应用程序。 我正在使用 tslint 5.6.0

我正在使用以下模块: https://www.npmjs.com/package/tslint

只关注一个文件...

检查以下文件时:

import  NgModule, ErrorHandler  from "@angular/core";
import  BrowserModule  from "@angular/platform-browser";
import  IonicApp, IonicModule, IonicErrorHandler  from "ionic-angular";
import  MyApp  from "./app.component";

import  AboutPage  from "../pages/about/about";
import  ContactPage  from "../pages/contact/contact";
import  HomePage  from "../pages/home/home";
import  TabsPage  from "../pages/tabs/tabs";

import  StatusBar  from "@ionic-native/status-bar";
import  SplashScreen  from "@ionic-native/splash-screen";

@NgModule( 
    declarations: [
        MyApp,
        AboutPage,
        ContactPage,
        HomePage,
        TabsPage,
    ],
    imports: [
        BrowserModule,
        IonicModule.forRoot( MyApp ),
    ],
    bootstrap: [ IonicApp ],
    entryComponents: [
        MyApp,
        AboutPage,
        ContactPage,
        HomePage,
        TabsPage,
    ],
    providers: [
        StatusBar,
        SplashScreen,
         provide: ErrorHandler, useClass: IonicErrorHandler ,
    ],
)
export class AppModule  

我明白了:

The key 'bootstrap' is not sorted alphabetically
RuleFailurePosition  position: 790, lineAndCharacter:  line: 25, character: 4  
RuleFailurePosition  position: 799, lineAndCharacter:  line: 25, character: 13  

我正在使用以下选项:


    "extends": "tslint:recommended",
    "rules": 
        "no-duplicate-variable": true,
        "max-line-length": 
            "options": [120]
        ,
        "ordered-imports": false,
        "new-parens": true,
        "no-arg": true,
        "no-bitwise": true,
        "no-conditional-assignment": true,
        "no-consecutive-blank-lines": false,
        "no-console": 
            "options": [
                "debug",
                "info",
                "log",
                "time",
                "timeEnd",
                "trace"
            ]
        
    ,
    "jsRules": 
        "max-line-length": 
            "options": [120]
        
    

我需要在 TSLint 上配置什么选项来防止出现此错误?

【问题讨论】:

你想配置 tslint 不显示这个错误吗?或者如何更改代码以遵守 tslint 规则? 我要不要配置 tslint 不显示这个错误 【参考方案1】:

这里失败的规则似乎是object-literal-sort-keys。

您应该能够在配置文件的 rules 部分中禁用它,方法是添加:

"object-literal-sort-keys": false

你可以找到所有tslint规则here。

【讨论】:

【参考方案2】:

对于任何从 javascript 迁移到 TypeScript 的人,或者只是拥有 javascript + typescriptm 的混合代码库的人,您也可以在“jsRules”中定义此规则,即消除此错误,当您在 javascript(不是打字稿文件)中定义了控制台语句。

//tslint.json


  "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],  
  "rules": 
    "object-literal-sort-keys": false //Disable for typescript
  ,
  "jsRules": 
    "object-literal-sort-keys": false //Disable for javascript
  

【讨论】:

以上是关于TSLint - 防止错误:密钥未按字母顺序排序的主要内容,如果未能解决你的问题,请参考以下文章

python中未按数字排序的元组列表

优先队列未按正确顺序排序

Vigenere Cipher Key 未按预期工作

Firebase iOS 查询未按预期排序

VBA Access - 按字母顺序排序列表框

防止 Prettier(代码格式化程序)和 ESLint/TSLint 之间的冲突