首页 > 解决方案 > 在打字稿中,如何使用泛型来约束和描述函数的返回值类型?

问题描述

看代码,我认为汤姆是 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

标签: typescriptfunctiongenerics

解决方案


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

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)

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


推荐阅读