silvermine / toolbox

MIT License
2 stars 6 forks source link

Add isBoolean type guard #49

Closed onebytegone closed 2 months ago

onebytegone commented 11 months ago

Toolbox contains type guards for generic types such as isNumber. However, for booleans we have to resort to something like:

interface Animal {
   isAdoptable?: boolean;
}

const stuffedTiger: Animal = {},
      russianBlue: Animal = { isAdoptable: true };

// Type 'undefined' is not assignable to type 'boolean'. (2322)
const isAdoptable: boolean = stuffedTiger.isAdoptable;

if (stuffedTiger.isAdoptable === false || stuffedTiger.isAdoptable === true) {
   // works
   const isAdoptable: boolean = stuffedTiger.isAdoptable;
}

if (stuffedTiger.isAdoptable !== undefined) {
   // works
   const isAdoptable: boolean = stuffedTiger.isAdoptable;
}

TS Playground: https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgIImAWzgG2QbwChkTgBnVAEwHsAHMOAIxwgH4AuZR66luEANyEAvoUIJqIMmGTSArjBgRKAFWABzaJ3RZcyALwFhAGmIlzUOWTLB+AIRxyI2jNjyH8yclToNmz5DBLFGEhQgB6cOQVAE9aFAByORBKCBhQZQSvMmQQahk4aw0QJhZA6kC4xO5eCH4EgDpkAAoAJgBmVtaASnFJaWyfelKAmr4QA1kwBSVVDWgG7xph-zDgGBb5RWU1TShFimW-Mv1T5HgcMhQAH2upmZ35-aXfEYMzoKdugjNkSOQAO7UKAAazIvwkUhkLxWLE4YzqE0MW1muwWMOOECEokI602022cz2ByGmOQAEIzslUukQMpvkRzP8gaDweZIQMMSN4TxxpMUY9iVzViIgA

We should add an isBoolean type guard.