typescript - Startvärde för typ som [number, number]
Jag har ett fält vars typ är [number, number] och problem med TypeScript-kompilatorn (strict inställt på true) som klagar på startvärdet. Jag har försökt följande:
public sheet: [number, number];- gererror TS2564: Egenskapen 'sheet' har ingen initialisator och är inte definitivt tilldelad i konstruktorn.public sheet: [number, number]=[];- gererror TS2322: Typen 'never[]' kan inte tilldelas till typen '[number, number]'.public sheet: [number, number]=[] as [number, number];samma som ovan
Jag vet att jag kan skapa ett litet monster som public sheet: [number, number]=[] as any as [number, number]; (eller tilldela t.ex. [0, 0] vilket jag inte vill göra) men jag undrar om det finns ett bättre sätt att gå. Har du några idéer?
Svar #1
Detta fel kommer från compiler-alternativet strictPropertyInitialization som strikt läge aktiverar.
Du kan använda modifieraren för definitiv tilldelningspåstående ! för att tala om för TypeScript att det är initialiserat någon annanstans:
public sheet!: [number, number];Svar #2
Det enklaste och kortaste sättet är att konvertera typen efter tilldelningen, enligt följande:
const arrayOfNumbers = [] as any as [number, number];
Resultatet av detta kommer att bli att typen av arrayOfNumbers kommer att vara [number, number] som begärt, men du kommer fortfarande att få en tom array [] som startvärde.
TypeScript låter dig inte tilldela något annat till den här arrayen än den givna strukturen [number, number] (om strikt läge är aktiverat, förstås).
