官方角度脚本

时间:2018-06-01 19:24:29

标签: angular angular-material phpstorm

我从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的错。所以我一定做错了什么?!

4 个答案:

答案 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"]