angular - A Prettier eltávolítja a típusokat
Fogalmam sincs miért, egy Angular alkalmazásban vagyok, és amikor megnyomom a dokumentum formázása gombot, a típusaim eltűnnek.
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;
}
Van valami tipp arra, hogy mi lehet az?
Válasz #1
Alapértelmezés szerint a prettier-tslint a Prettierrel együtt van telepítve, és a tslint.json konfigurációd szerint formáz, automatikusan javítva a kisebb lint hibákat.
Az Angular CLI által generált linting szabályok tartalmaznak egy szabályt, amely kimondja, hogy az implicit típusú változóknak nem szükséges a kifejezett típusmegadás. Konkrétan ez a no-inferrable-types szabály a tslint.json fájlodban.
Ha nem inline módon rendelnéd a változókat, a típusuk nem lenne eltávolítva, például:
export class AppComponent {
name: string;
constructor() {
this.name = 'Name';
}
}
A fenti formázása megtartaná a kifejezett típusmegadást.
Mivel az alapértelmezett lintelési szabályok az 'Angular módja', szerintem nincs probléma azzal, ha így hagyjuk; ha egy változónak rögtön értéket adunk stringként, a típusa nyilvánvalóan string.
Azonban, ha meg szeretnéd változtatni a Prettier formázási viselkedését, egyszerűen állítsd a no-inferrable-types bejegyzést a tslint.json-ben false-ra. Ha nem szeretnéd megváltoztatni a lintelő szabályokat, akkor a Prettier munkaterületi konfigurációjában is le tudod tiltani, de a lintelő továbbra is hibát jelez az inferálható típusra.
