【发布时间】:2021-09-10 23:57:15
【问题描述】:
我有以下代码:
function testFunc<T>(
a: keyof T,
b: keyof T
) {
return function(object2: T): T {
return object2;
}
}
const obj2 = {
a1: 1,
b1: 2,
c1: 3,
e1: 4,
d1: 5
}
const result = testFunc('a1', 'b1')(obj2);
const c1 = result.c1; // Error. Property 'c1' does not exist on type '{ a1: any; } & { b1: any; }'. It's wrong
// We can try this
const result2 = testFunc<typeof obj2>('a1', 'b1')(obj2);
const c12 = result2.c1; // Works great
如何在不明确指定 testFunc (testFunc<typeof obj2>) 中的类型的情况下从嵌套函数中使用泛型?谢谢。
你可以在这里看到:https://tsplay.dev/mbk7BW
【问题讨论】:
-
是的,但是如果我添加一个泛型参数,代码仍然不能按我想要的方式工作
-
恐怕不清楚你在问什么。你似乎在问你展示的代码是如何工作的,但我认为你一定是在问别的问题。
-
您是否考虑过反转柯里化(以便您先传递对象,然后传递您要处理的字段)?
-
@raina77ow 我想要这个语法:)
-
@T.J.Crowder 更新了示例,它可能会变得更清晰。我想在嵌套函数的第一个函数中使用泛型类型
标签: typescript typescript-generics