首页 > 解决方案 > 从函数回调推断泛型类型参数

问题描述

给定一个 function ,可以正确推断出foo类型参数,如下例所示:Tstring

declare function foo<T>(callback: (bar: T) => void): void

// foo<string>(callback: (bar: string) => void): void
// ---> T is inferred string here
foo((bar: string) => { })

但是,以下示例显示T被推断为unknown. 所以我的问题是:为什么类型不解析为T嵌套在回调的对象类型中?

declare function foo2<T>(callback: (bar: { a: T }) => void): void

// foo2<unknown>(callback: (bar: { a: unknown; }) => void): void
// ---> T is inferred unknown here
foo2(({ a: string }) => { })

示例代码

标签: typescripttypescript-generics

解决方案


我想这就是你要找的

declare function foo<T>(callback: (bar: T) => void): void
foo((bar: string) => { })

declare function foo2<T>(callback: (bar: T) => void): void
foo2((a: { a: string }) => {} )

打字稿游乐场


推荐阅读