typescript - Finnes det en ESLint-regel for å forhindre sannhetsverdikontroller


Jeg vil unngå å ved et uhell utløse Javascripts ville sannhetsverdissystem. Finnes det noen ESLint-regler som kan hjelpe med dette? Spesielt i if-setninger. For eksempel:

const a: number = 0;
const b: string | null = null;
if (a) { ... } // Should be an error.
if (b) { ... } // Should be an error.
if (a !== 0) { ... } // Ok
if (b !== null) { ... } // Ok

Jeg trodde no-implicit-coercion kanskje kunne gjøre jobben, men det ser ut til at det ikke dekker dette tilfellet.

Svar #1

Ja, @typescript-eslint/strict-boolean-expressions.

Teknisk forklaring: det forbyr bruk av ikke-boolean typer i uttrykk der en boolean forventes.

Med andre ord: det gjør at du må eksplisitt sende booleanske verdier (false eller true), ikke «truthy»-ting. I stedet for if (a), må du gjøre if (a != null) eller lignende.

(du kommenterte dette i 2020, poster bare for å få et svar 🙂)

Svar #2

Ikke sikker på om det finnes en regel som gjør det, men hvis det gjør det må det være en typescript-eslint-regel. Bare Javascript har ikke nok informasjon til å statisk avgjøre om tvangskonvertering vil skje. Du kan se typescript-eslint-reglene her: https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin/src/rules

Relaterte artikler