typescript - 键入'字符串 | number' 不可分配给类型 'ReturnType'
问题描述
我试图理解打字稿的条件泛型,所以我编写了一个函数来调用Cat
使用方法名称字符串的方法。
// union of all methods names in T
type Methods<T> = {
[K in keyof T]: T[K] extends (...args: any) => any ? K : never;
}[keyof T];
type Cat = {
meow(n: string): string;
eat(n: number): number;
};
function foo<M extends Methods<Cat>>(c: Cat, method: M, ...params: Parameters<Cat[M]>): ReturnType<Cat[M]> {
return c[method](...params);
}
这里已知M
是 中的方法名Cat
,typescript 能够在类型签名中确定其参数和返回类型。但在表达式中c[method](...params)
,它似乎忘记了我们调用的是什么方法,所以返回string | number
。为什么会发生这种情况,我该如何解决?
解决方案
推荐阅读
- modbus - mbpoll 将数据写入中继板
- javascript - 如何在从 php 动态创建的表内的选择框中显示选定的值?
- python - 列表理解中的匹配、过滤和分组
- r - R中的隐式字符强制:为什么“4”> 10 == TRUE?
- postgresql - 聊天(投票过程)无法正常工作。错误 500
- android - 增加选定底部导航项的大小
- keras - 通过改变学习率,每个 epoch 的训练时间急剧减少
- c# - 在迁移时使用 ef core 插入数据的问题
- azure-active-directory - AzureActiveDirectory - 禁用选择帐户
- asp.net-mvc - JavaScript 语言服务已被禁用,有人有这方面的经验吗?