Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 保留函数和函数参数类型_Typescript_Typescript Generics_Typescript3.0 - Fatal编程技术网

Typescript 保留函数和函数参数类型

Typescript 保留函数和函数参数类型,typescript,typescript-generics,typescript3.0,Typescript,Typescript Generics,Typescript3.0,我想把一个函数和该函数的参数发送给另一个函数。这样做时,我希望保留所有键入信息,并获得intellisense和所有语法检查。最终目的是在稍后阶段调用该函数 目前,我有这样的东西,它可以工作,但没有给我参数的类型安全性: functionA () { return this.functionB(someService.someMethod, ["one", "two", "three"]); } functionB<TResponse, TFunction extends (...

我想把一个函数和该函数的参数发送给另一个函数。这样做时,我希望保留所有键入信息,并获得intellisense和所有语法检查。最终目的是在稍后阶段调用该函数

目前,我有这样的东西,它可以工作,但没有给我参数的类型安全性:

functionA () {
   return this.functionB(someService.someMethod, ["one", "two", "three"]);
}

functionB<TResponse, TFunction extends (...args: any[]) => Promise<TResponse>>(
   fn: TFunction,
   params: Parameters<TFunction>): Promise<TResponse> {

   ...
}
functionA(){
返回this.functionB(someService.somesmethod,[“一”,“二”,“三]);
}
功能B承诺>(
fn:t功能,
参数:参数):承诺{
...
}
我在下面尝试过这个方法,它似乎修复了调用语法,但会产生其他效果,如失去函数的结果类型,更重要的是,会出现错误
类型“TFunction”不满足约束“(…args:any[])=>Promise”。
在编译器中:

functionB<TResponse, TFunction extends Function>(
   fn: TFunction,
   params: Parameters<TFunction>): Promise<TResponse> {

   ...
}
functionB(
fn:t功能,
参数:参数):承诺{
...
}

操场上的快捷方式似乎保留了类型安全,您的问题到底在哪里?很有趣,感谢您的快速响应!我真的不明白为什么这样行而我的不行。。。我得到的参数和任何[]一样。很高兴知道我已经走上了正轨,如果我找到了罪魁祸首,我会更新。问题似乎来自这样一个事实:调用所有这些的方法也是一个泛型。所以它无法推断出我猜的类型。它看起来有点像
private function(选项:RequestOptions):Promise{return this.functionB(someService.someMethod,[“一”,“二”,“三]);}
如果我将其更改为一个本地变量,并像这样键入
return Promise它工作得很快在操场上似乎保留了类型安全性,您的问题到底在哪里?很有趣,感谢您的快速响应!我真的不明白为什么这样行而我的不行。。。我得到的参数和任何[]一样。很高兴知道我已经走上了正轨,如果我找到了罪魁祸首,我会更新。问题似乎来自这样一个事实:调用所有这些的方法也是一个泛型。所以它无法推断出我猜的类型。它看起来有点像
private function(选项:RequestOptions):Promise{return this.functionB(someService.someMethod,[“一”,“二”,“三]);}
如果我将其更改为一个本地变量,并像这样键入
return Promise成功了