typescript - 打字稿所需的函数类型参数
问题描述
我想要一个需要提供类型参数的函数:
function foo<T>(key: keyof T): keyof T {
return key;
}
foo<TypeWithoutAbc>('abc') // error
foo<TypeWithAbc>('abc') // no error
foo('abc'); // no error - why not?!
我希望 foo('abc') 会导致错误,因为我没有提供类型 - 我怎样才能使类型成为必需或完成我在这里尝试做的事情,即确保我传递的字符串存在作为提供类型的属性?
这可能吗?
我试过 <T = never> 但它不起作用,相反它几乎假设函数参数正在确定类型 T 并且当我将鼠标悬停 foo('abc')
foo('abc');
function foo<{
abc: any;
}>(key: "abc"): "abc"
解决方案
尝试使用第二种泛型类型,默认为keyof T
:
function foo<T, S extends keyof T = keyof T>(key: S): S {
return key;
}
推荐阅读
- notifications - 关于向外部系统通知状态更改的方法的建议:业务层通知与数据库触发器
- google-cloud-platform - 添加 Google Cloud SDK apt 存储库签名密钥的 Ansible 任务
- google-apps-script - 通过将联系人 API 迁移到人员 API,我如何获取具有特定标签的联系人列表?
- google-chrome-extension - Chrome 扩展 - 从商店更新刷新所有标签
- c++ - 提升 asio 证书验证
- mysql - 我无法使用 MySQL 数据库在 Heroku 上部署 Node.js 应用程序
- if-statement - 为返回布尔值并接受两个非原始类型参数的方法编写 junit 测试
- swift - swiftui 不会更新新状态
- excel - countifs 除了根据下拉列表计算变化的列
- node.js - Bot 未在反应角色命令中分配角色