Closed
Description
type A = number | string
function isNumber(_): _ is number { return typeof _ === 'number' }
const as: A[] = [1, 2, '3']
// (1) - OK: bs is number[]
let bs = as.filter(isNumber)
// (2) - Not OK - cs is still A[], but should be number[]
let cs = as.filter(_ => isNumber(_))
// (3) - Not OK - ds is still A[], but should be string[]
let ds = as.filter(_ => !isNumber(_))