【发布时间】:2021-03-12 23:21:38
【问题描述】:
我有一个从 api 名称到 api 输入对象类型的类型化映射的 api:
type ApiInputTypes = {
doThis: { x: number }
doThat: { y: string }
}
type ApiNames = keyof ApiInputTypes
我的目标是编写一个可以处理任何这些 api 请求的通用函数,但我遇到了一个我没想到的类型错误。
function handleApi<Name extends ApiNames>(name: Name, args: ApiInputTypes[Name]) {
if (name === "doThis") {
args.x // Error
} else {
args.y // Error
}
}
具有讽刺意味的是,这仍然有效......
// But this works...
handleApi("doThis", { x: 190 })
有什么想法吗?这是playground 链接。
【问题讨论】:
标签: typescript