You can use functions like this
function nonNullable<T>(value: T): value is NonNullable<T> {
return value !== null && value !== undefined;
}
type Truthy<T> = T extends false | '' | 0 | null | undefined ? never : T; // from lodash
function truthy<T>(value: T): value is Truthy<T> {
return !!value;
}
[1, 2, 0, null].filter(nonNullable) // number[]
[1, 2, 0, null].filter(truthy) // number[]
NonNullable –
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#predefined-conditional-types