We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
TypeScript Version: 4.0.5
Search Terms:
infer, object literals, interdependencies
Code
type Selector<S> = (state: S) => any export interface Reducer<T = any> { (state: T | undefined, action: any): T } type UnboxState<R extends Reducer> = R extends Reducer<infer U> ? U : never declare function example<R extends Reducer, S extends Selector<UnboxState<R>>>(r: R, s: S) : void example( (state, action) => ({ name: 'Gio Va' }), state => 23 ) declare function example2<R extends Reducer, S extends Selector<UnboxState<R>>>(x: { r: R, s: S }) : void example2({ r: (state, action) => ({ name: 'Gio Va' }), s: state => 23 })
Expected behavior:
Infer type { name: string } to state in the example2 function as it does correctly in example function.
{ name: string }
state
example2
example
Actual behavior:
In the example2 function the type inferred to state is any.
any
Playground Link:
playground
Related Issues:
TypeScript Version: 4.0.5
Search Terms:
infer, object literals, interdependencies
Code
Expected behavior:
Infer type
{ name: string }tostatein theexample2function as it does correctly inexamplefunction.Actual behavior:
In the
example2function the type inferred tostateisany.Playground Link:
playground
Related Issues: