我从https://material.angular.io/components/chips/overview复制了以下代码:
visible: boolean = true;
selectable: boolean = true;
removable: boolean = true;
addOnBlur: boolean = true;
// Enter, comma
separatorKeysCodes = [ENTER, COMMA];
fruits = [
{ name: 'Lemon' },
{ name: 'Lime' },
{ name: 'Apple' },
];
add(event: MatChipInputEvent): void {
let input = event.input;
let value = event.value;
// Add our fruit
if ((value || '').trim()) {
this.fruits.push({ name: value.trim() });
}
// Reset the input value
if (input) {
input.value = '';
}
}
remove(fruit: any): void {
let index = this.fruits.indexOf(fruit);
if (index >= 0) {
this.fruits.splice(index, 1);
}
}
但我得到以下错误:
- TSLint:从布尔文字中简单推断布尔类型,删除类型注释(无可推断类型)
- 未使用的字段可见
- TSLint:标识符“值”永远不会被重新分配;使用'const'而不是'let'。 (比较喜欢-常数)
为什么我会收到这些错误?我不认为这是Angulars的错。所以我一定做错了什么?!
答案 0 :(得分:3)
这些不是"错误"来自官方Angular文档。它们是打字稿短信的警告。 Angular CLI与TSLint捆绑在一起,TSLint是一个检查代码并提供警告的软件包,因此您可以保持代码清洁并遵守标准。
- TSLint:从布尔文字中简单推断布尔类型,删除类型注释(无可推断类型)
声明变量时,如果初始化它,则无需指定类型,因为typescript可以从指定的值推导出它。
let myVar = true; // myVar is of inferred boolean type
- 未使用的字段可见
您声明了变量 visible 但从未使用过。它可能只是从您的代码中删除它。
- TSLint:标识符'值'永远不会被重新分配;使用' const'而不是让#39; (比较喜欢-常数)
如果您从未将值重新赋值给变量,请使用const而不是let。 const 变量将保留一个值,同时保护它不被更改。
只需使用推荐的修改:
selectable = true;
removable = true;
addOnBlur =true;
// Enter, comma
separatorKeysCodes = [ENTER, COMMA];
fruits = [
{ name: 'Lemon' },
{ name: 'Lime' },
{ name: 'Apple' },
];
add(event: MatChipInputEvent): void {
let input = event.input;
const value = event.value;
// Add our fruit
if ((value || '').trim()) {
this.fruits.push({ name: value.trim() });
}
// Reset the input value
if (input) {
input.value = '';
}
}
remove(fruit: any): void {
let index = this.fruits.indexOf(fruit);
if (index >= 0) {
this.fruits.splice(index, 1);
}
}
答案 1 :(得分:1)
这些是linting错误,换句话说它们不会产生错误,但是它们存在是因为代码不符合TSlint样式指南,例如当你使用{{1}时它们是相同的} linter并且你将standard js
放在linter将;
作为错误加下划线。
答案 2 :(得分:1)
因为你的IDE启用了TSLint
TSLint:从布尔文字中简单推断布尔类型,删除类型注释(不可推断类型)
在ts类型中是可推断的 - 当你指定一个布尔值时,你不需要明确提到:boolean。改变如下
ionic cordova run android --prod
未使用的字段
您未在代码中的任何位置使用可见
TSLint:标识符'值'永远不会被重新分配;使用' const'而不是让#39; (比较喜欢-常数)强>
当你没有重新分配变量时,你将它定义为const而不是让
visible = true;
selectable = true;
removable = true;
addOnBlur = true;
答案 3 :(得分:0)
您还可以选择在tslint.json中禁用此警告
"no-inferrable-types": [true, "ignore-params"]
至 "no-inferrable-types": [false, "ignore-params"]