typescript - 在打字稿中,如何使用泛型来约束和描述函数的返回值类型?
问题描述
看代码,我认为汤姆是 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
解决方案
您的识别功能应如下所示:
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
。
推荐阅读
- reactjs - 如何动态导入作为json数据的反应模块
- swift - 系统网络扩展通过 OpenVPN 协议连接到 VPN,但无法查看任何网页
- excel - 命名表头时出现类型不匹配错误
- android - 从 Set > clusters获取 CustomClusterItem
- google-api - 获取 google 环聊会议中的列表或人员
- c - 使用动态内存分配的程序
- android - 添加启动画面时,Android 模拟器不会加载
- node.js - MongoDB Atlas/Cloud 从 _id 检索数据
- vaadin - 在 Vaadin 14.6.1 项目的 node_modules 文件夹中找不到 vaadin-core-shrinkwrap 文件夹
- django - 为什么我看不到来自 ValidationError Django 的错误消息?