相关代码如下,在 use 函数中加入联合类型后就会告诉我 number 和 string 类型不兼容,求教应该怎样解决这个问题,换个写法的话我想要的是保留 use 的泛型 declare function use(data: T, cb: (arg: T) => void): void declare function cb1(arg: string): void declare function cb2(arg: number): void use('', cb1) // success use(1, cb2) // success const data: string | number = 9 const cb: typeof cb1 | typeof cb2 = cb1 use(data, cb) // error * * * 我面临的实际问题是,我有一个工具函数,它会返回一个 变量 和 消费这个变量的函数,变量的类型和函数的入参是强关联的,都需要限制为同一个类型,而这两个返回值都会被另一个函数作为入参,当我的工具函数返回一个联合类型的时候就得到了错误,上面给的实例代码有点不符合实际情况,看看下面的代码应该能更好理解 declare function getCb(): | { data: string; cb: (arg: string) => void } | { data: number; cb: (arg: number) => void } declare function use(props: { data: T; cb: (arg: T) => void }): void use(getCb()) // error