Closed
Description
Bug Report
🔎 Search Terms
complex types generic inference
🕗 Version & Regression Information
TS Version: ^4.2
- This is a crash
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about incorrect types function parameters
⏯ Playground Link
Playground link with relevant code
💻 Code
interface Action<TName extends string,TPayload> {
name: TName,
payload: TPayload
}
const actionA = { payload: 'any-string' } as Action<'ACTION_A', string>
const actionB = { payload: true } as Action<'ACTION_B', boolean>
function call<TName extends string,TPayload>(
action: Action<TName,TPayload>,
fn: (action: Action<TName,TPayload>)=> any,
) {
fn(action)
}
const printFn = (action: typeof actionA | typeof actionB)=> console.log(action)
// It works
call(actionA, printFn)
// It crashes
call(actionB, printFn)
//workaround
call<'ACTION_B', boolean>(actionB, printFn)