lint错误使代码发生变化但不确定如何继续

时间:2017-09-23 20:56:53

标签: javascript jquery html typescript kendo-ui

更新

我更新了这样的代码,但我仍然收到以下错误

错误  类型'String'不能分配给'string'类型。   'string'是一个原语,但'String'是一个包装器对象。喜欢在可能的情况下使用'string'

更新代码

    public sportsService: string;

  constructor( sportsService: String) {
    this.sportsService = sportsService;
  }
  • 我是tslint和打字稿的新手。
  • 我正在尝试修复此错误。 无法在构造函数中声明属性'waterService'

  • 发生在这条线上   构造函数(public sportsService:SPORTSService){}

  • 你能告诉我如何解决它。

  • 我做了一些研究,但没有找到解决方案。
  • 提供以下代码。
  • 甚至看过这个链接并尝试但无法继续

https://github.com/Microsoft/tslint-microsoft-contrib

无法在构造函数中声明属性“waterService”

/** Trees for contract and title. */
import {
  Component,
  Inject,
  OnInit,
  EventEmitter,
  ViewChild,
  Input,
  Output
}
from '@angular/core';
import {
  SPORTSService
}
from '../../services/sports.service';
import {
  KendoGridComponent
}
from '../grid/grid.component';
import {
  KendoDialog
}
from '../shared/kendoDialog/kendodialog';
import {
  ProgressCircle
}
from '../shared/progress/progress-circle';

declare let $: any;



@Component({
  selector: 'player',
  template: `<div id="windowcontainer"></div>`
})

export class player implements OnInit {

  private henInfoPopUpWindow;
  private airDate;
  private airTime;
  private showTitle;


  @Input() kendoCommandObj: any;




  constructor(public sportsService: SPORTSService) {}

  private kendocommand = {
    edit: {
      createAt: "bottom"
    },
    group: false,
    reorder: true,
    disableFreeze: true,
    resize: true,
    sort: true,
    autoBind: true,
    filter: false,
    pager: {
      messages: {
        //display: "Showing {0} to {1} of {2} entries"
      }
    },
    model: {},
    columns: [],
    pagesize: 50,
    getComponentUrl: "swimming",
    searchFields: [],
    mandatoryFields: [],
    saveStatus: false
  };


  @Output() applyAPTInfo: EventEmitter < any > = new EventEmitter < any > ();
  @Output('mouseCount') getTreeEvent = new EventEmitter<number>();

  ngOnInit() {
    this.mouseType = 'hen';
    let that = this;
    let attributes=this.sportsService.getSeesionStorageValue();

2 个答案:

答案 0 :(得分:2)

TSLint有一条规则,禁止使用构造函数属性(即当您使用publicprivate等访问者关键字为构造函数参数添加前缀时。

"no-parameter-properties": true

在我看来,这是一个荒谬的规则,因为我更愿意看到:

class Example {
    constructor(private name: string) {}
}

我不想看到:

class Example {
    private name: string;
    constructor(name: string) {
        this.name = name;
    }
}

换句话说,stop manually assigning TypeScript constructor parameters

修复

只需关闭规则:

"no-parameter-properties": false

修复2

对于第二个错误,您在类型注释中使用了String接口。对此的修复是遵循TSLint规则,因为它是合理的,并使用stringnumberboolean等在类型注释中使用基元类型。

let x: String; // <-- interface String

let y: string; // <-- primitive type string

此外,在普通的JavaScript中也遵循规则,在这里,最好使用文字,而不是对象:

let x = 'A literal string value here'; // <-- literal

let y = new String('String object'); // <-- object

答案 1 :(得分:1)

这是一个很好的tslint规则, 它意味着始终使用原始类型名称 而不是原始类型构造函数

你应该替换:

  • Stringstring
  • Booleanboolean
  • Numbernumber

如果您对不同之处感兴趣,请查看以下链接: