statisk analys - Är @typescript-eslint/no-invalid-void-type universellt tillämplig?


Jag tittar på att aktivera lint-regeln @typescript-eslint/no-invalid-void-type. Jag vill försäkra mig om att allt den flaggar verkligen är något jag alltid vill bli av med. Bara för att kontrollera min förståelse. Är följande påståenden korrekta?

  1. Det finns aldrig någon anledning att inkludera void i en typunion, som string | void.
  2. Det finns aldrig någon anledning att deklarera en funktion som tar void som parameter. (Förutom för något som this: void).
  3. Det finns aldrig någon anledning att sätta void i en containergenerisk, som Array<void | string>.
  4. Att sätta void | undefined på en funktions returtyp (t.ex. () => void | undefined) är överflödigt.
  5. Om du har () => SomeType | void, bör du använda () => SomeType | undefined istället.

Och anledningen till att de flesta av dessa påståenden är sanna är att du inte kan instansiera ett värde av typen void, så något som Array är meningslöst. Eller hur?

Svar #1

Jag lägger till för att inaktivera denna regel på följande kodfragment som ser korrekt ut för mig:

  register<T>(
    requestFunction: (reqId: number) => void,
    cancelFunction: (reqId: number) => void | null | undefined, // eslint-disable-line @typescript-eslint/no-invalid-void-type
    ...