typescript - 打字稿参数类型引用另一个参数
问题描述
我有这样的界面
interface IObject {
a: string;
b: number;
c: string[];
}
我想建立一个这样的功能
function fancyName(obj: IObject, key: keyof IObject, value: any)
目前,您可以将任何您想要的东西转化为价值。但我想做这样的事情
- 如果
key
是a
,那么value
类型必须是字符串 - 如果
key
是b
,那么value
类型必须是数字 - 等等
我试过这样做value: IObject[key]
,但它不起作用。因为我认为它不理解我尝试引用另一个参数。我怎样才能在 TS 中实现这一点?
解决方案
感谢 Jonrsharpe 让我想到了泛型类型。这就是我实现它的方式
function fancyName<K extends keyof T, T = IProduct>(object: T, key: K, value: T[K])
推荐阅读
- aframe - A Frame VR 耳机/浏览器兼容性
- azure - Azure Web App 仅通过应用程序网关并禁用直接访问
- python - 表名上的 SQL 语法错误
- android - Android TypefaceSpan NoSuchMethodError for new TypefaceSpan(Typeface)
- codenameone - 如何阻止 Codenameone 中的 MapContainer 类拖动/平移
- qt - qml中的编排
- python - 操作 Python 魔术方法
- pandas - 大熊猫的反电话?
- python - 循环中的数字平方
- javascript - 如何将事件侦听器重新绑定到已删除并再次添加的元素