Closed
Description
Search Terms
boolean
type
guard
Suggestion
A common idiom in JavaScript is to filter an array using Boolean
as a filter function to remove falsy values. To make this useful in TypeScript, Boolean
should act as a type guard:
+type Falsy = false | 0 | '' | null | undefined;
interface BooleanConstructor {
new (value?: any): Boolean;
- (value?: any): boolean;
+ <A>(value: A | Falsy): x is A;
readonly prototype: Boolean;
}
Examples
// The type of `numbers` should be `number[]` but currently it is `(number | undefined)[]`.
const numbers = [1, 2, undefined, 3].filter(Boolean);
Checklist
My suggestion meets these guidelines:
- This wouldn't be a breaking change in existing TypeScript/JavaScript code (I think this is true?)
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
- This feature would agree with the rest of TypeScript's Design Goals.