javascript - Varför är "type" föråldrat i typescript?
Jag har en type-deklaration som nedan:
type Position = {
white: number[];
black: number[];
}
När jag lintar projektet ser jag detta fel:
error Use an interface instead of a type literal @typescript-eslint/prefer-interface
Dokumentationen om regeln som orsakar felet säger:
Gränssnitt föredras generellt framför typbokstäver eftersom gränssnitt kan implementeras, utökas och slås samman.
Denna regel är vanlig mellan TSLint och ESLint. Jag vet att interface är mer kraftfull än type, men när jag inte behöver interface-fördelarna och type räcker, varför skulle jag inte använda det? Finns det några andra nackdelar med att använda type?
Svar #1
Det verkar som att det inte finns något problem med att använda type i Typescript och regeln är ganska subjektiv som @CertainPerformance kommenterade ovan. Jag kom fram till att regeln har blivit föråldrad och borttagen från version 2.2.0.
Jag använder @typescript-eslint/eslint-plugin och @typescript-eslint/parser. Jag uppgraderade båda till version 2.2.0 och blev av med linter-felet.
Svar #2
Med skillnaden mellan Type och Interface endast på utbyggbarhet (inte exakt den enda skillnaden, men en stor skillnad som nämndes i dokumentationen). Jag ser ingen anledning att behålla Type längre, kanske är det därför det är föråldrat.
Skillnader mellan typalias och gränssnitt
Typalias och gränssnitt är mycket lika, och i många fall kan du välja fritt mellan dem. Nästan alla funktioner hos ett gränssnitt är tillgängliga i typ, den viktigaste skillnaden är att en typ inte kan öppnas igen för att lägga till nya egenskaper medan ett gränssnitt alltid kan utökas.
Referens: https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#differences-between-type-aliases-and-interfaces