在打字稿中,如何使用泛型来约束和描述函数的返回值类型?

时间:2019-09-21 12:57:26

标签: typescript function generics

看代码,我认为汤姆是BB扩展AA的类型,所以应该可以工作

代码错误: TS2322:无法将类型“ BB”分配给类型“ T”

interface AA {
    name: string
}
interface BB extends AA{
    age: number
}
const tom: BB = {
    name: 'tom',
    age: 20
}
function something<T extends AA>(): T {
    return tom
}

如何使用

something<BB>() 

获得扩展AA的值 ;或

something<CC>() 

其中CC扩展了AA

1 个答案:

答案 0 :(得分:0)

您的识别功能应如下所示:

interface AA {
    name: string
}
interface BB extends AA{
    age: number
}
const tom: BB = {
    name: 'tom',
    age: 20
}
function identity<T extends AA>(arg: T) {
    return arg
}

identity(tom)

当前实现的问题是您使用的是特定类型的T类型。