ウェブサイト検索

angular - Prettier が型を削除する


なぜかわかりませんが、私はAngularアプリにいて、ドキュメントのフォーマットを押すと型が消えてしまいます。

Before:
export class AppComponent {
  title:string = 'angular-todolist';
  name:string = 'Michael';
  someInteger:number = 10;
}
After:
export class AppComponent {
  title = 'angular-todolist';
  name = 'Michael';
  someInteger = 10;
}

それは何かについて何か提案はありますか?

回答 #1

デフォルトでは、prettier-tslint は Prettier と共にインストールされ、tslint.json の設定に従ってフォーマットされ、軽微なリンターのエラーを自動的に修正します。

Angular CLI によって生成されたリンティングルールには、暗黙的に型付けされた変数には明示的な型指定が必要ないとするルールがあります。具体的には、これは tslint.json 内の no-inferrable-types ルールです。

もし変数をインラインで割り当てていなければ、型は削除されません、例えば:

export class AppComponent {
  name: string;

  constructor() {
    this.name = 'Name';
  }
}

上記をフォーマットすると、明示的な型指定が保持されます。

デフォルトのリンティングルールは「Angular方式」であるため、そのままにしておくことに問題はないと思います。変数がすぐに文字列として代入される場合、その型は明らかに文字列です。

しかし、Prettier のフォーマット動作を変更したい場合は、単に tslint.json 内の no-inferrable-types の項目を false に変更してください。リンティングルールを変更したくない場合でも、Prettier のワークスペース設定で無効にすることは可能ですが、推論可能な型に関してはリンターが依然としてエラーを表示します。