Control Flow Analysis
function cfaSample(x: number|string) {
console.log(x) // : number|string
if (typeof x === 'string') {
console.log(x) // : string
return x
}
return [x] // [number]
} // inferred return type: string|[number]type Actions =
| { type: "create"; data: { name: string } }
| { type: "delete"; data: { id: number } }
| { type: "read"; data: number }
function reducer(action: Actions) {
switch(action.type) {
case 'create':
return createFoo(action.data) // data: {name: string}
case 'delete':
return deleteFoo(action.data) // data: {id: number}
case 'read':
return readFoo(action.data) // data: number
}
}Last updated