小编Myu*_* Ko的帖子

Iterable<Iterable<T>> 无法确认函数中的泛型 T

这是我的问题。

const iterable = [[[1,2,3]]]
function flat<T>(t:Iterable<Iterable<T>>):Iterable<T>{
    return [...t][0]
}
const flatted = flat(iterable) //return Iterable<unknown>  
Run Code Online (Sandbox Code Playgroud)

上面的函数不能假设 T 为数字,只需将其断言为未知。此时此刻,我觉得“嗯……泛型中的泛型无法推断?”。但下面的代码chuck效果很好

const iterable = [[[1,2,3]]]
function flat<T>(t:Array<Array<T>>):Array<T>{
    return [...t][0]
}
const flatted = flat(iterable) // omg.. return Array<number> 
Run Code Online (Sandbox Code Playgroud)

const iterable = [[[1,2,3]]]
function flat<T>(t:Iterable<Array<T>>):Array<T>{
    return [...t][0]
}
const flatted = flat(iterable) // also works.. return Array<number> 
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别?感谢您阅读我的问题。

generics type-inference typescript

4
推荐指数
1
解决办法
309
查看次数

标签 统计

generics ×1

type-inference ×1

typescript ×1