analiză statică - Este @typescript-eslint/no-invalid-void-type universal aplicabil?


Încerc să activez regula de lint @typescript-eslint/no-invalid-void-type. Vreau să mă asigur că tot ceea ce semnalează este cu adevărat ceva de care vreau întotdeauna să scap. Doar pentru a-mi verifica înțelegerea. Sunt corecte următoarele afirmații?

  1. Nu există niciodată un motiv să incluzi void într-o uniune de tipuri, cum ar fi string | void.
  2. Nu există niciodată vreun motiv să declari o funcție care primește void ca parametru. (Cu excepția unor lucruri precum this: void).
  3. Nu există niciodată un motiv să pui void într-un generic de container, cum ar fi Array<void | string>.
  4. Punerea lui void | undefined pe semnătura de retur a unei funcții (de exemplu () => void | undefined) este redundantă.
  5. Dacă ai () => SomeType | void, ar trebui să folosești în schimb () => SomeType | undefined.

Și motivul pentru care majoritatea acelor afirmații sunt adevărate este că nu poți instanția o valoare de tip void, așa că ceva de genul Array nu are sens. Corect?

Răspuns #1

Adaug pentru a dezactiva această regulă pe următorul fragment de cod care mi se pare corect:

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