Vyhledávání na webu

Žádná chyba typu při porovnávání boolean s null v TypeScriptu


Jsem překvapen, proč by TypeScript nehlásil chybu typu při porovnávání konstanty bool s null:

function get(): boolean {
    return Math.random() > 0.5;
}

const bool = get();
if (bool !== null) {
    console.log('bool is not null');
}

TypeScript Playground: https://www.typescriptlang.org/play?#code/GYVwdgxgLglg9mABAcwKZQBQEoBciBGccANqgIZIDeAUInYgE7ogNICyZUAFgHQMUATOAFtsiAHyIADDwCsAbmoBfatQgIAzlAJFiiALwp02RTGCIMhEogCE+w2BDFiWRDXqJ1YDSVQ9icMgYAORWejAaiGBw2o7OwViKKkA

Odpověď č. 1

Není to chyba TypeScriptu použít porovnání rovnosti, i když porovnání nedává smysl, protože bude vždy pravdivé nebo nepravdivé.

Ale pokud používáte TSLint, můžete vygenerovat varování, když se narazí na tento druh věci s pravidlem strict-type-predicates. (Bohužel se zdá, že dosud není integrováno do ESLint)