更新
我更新了这样的代码,但我仍然收到以下错误
错误 类型'String'不能分配给'string'类型。 'string'是一个原语,但'String'是一个包装器对象。喜欢在可能的情况下使用'string'
更新代码
public sportsService: string;
constructor( sportsService: String) {
this.sportsService = sportsService;
}
我正在尝试修复此错误。 无法在构造函数中声明属性'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();
答案 0 :(得分:2)
TSLint有一条规则,禁止使用构造函数属性(即当您使用public
或private
等访问者关键字为构造函数参数添加前缀时。
"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
对于第二个错误,您在类型注释中使用了String
接口。对此的修复是遵循TSLint规则,因为它是合理的,并使用string
,number
,boolean
等在类型注释中使用基元类型。
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规则, 它意味着始终使用原始类型名称 而不是原始类型构造函数
你应该替换:
String
与string
Boolean
与boolean
Number
与number
如果您对不同之处感兴趣,请查看以下链接: