2017-08-06 93 views
0

我做过的打字稿一些项目,但是当我最近看了一个项目的代码,我看到了一些声明,如下图所示:什么是语法泛型类型参数(在函数类型前)

export interface SomeInterface<T> { 
    <R>(paths: string[]): Observable<R>; 
    <R>(Fn: (state: T) => R): Observable<R>; 
} 

我不确定在<R>的TS中是什么语法,它出现在函数前面,例如:(paths: string[]) : Observable<R>。如果任何人有关于它的想法,你能否给我一些线索。谢谢。

回答

-1

这只是通用的。

把它放在函数上意味着它只与函数本身有关,而不是整个接口。

1

<R>基本上是说该接口的实现必须具有<R>的通用方法。例如,对于

<R>(paths: string[]): Observable<R>

是该原型相匹配的有效方法是:

function foo<R>(paths: string[]): Observable<R> { 
    // function code here 
} 
+0

我同意。另一种解释是用户可以直接选择函数的返回类型(或返回类型转换),而不使用基于类或接口的泛型类型。 – Wartoshika

+0

谢谢大卫。两个解释我需要另外,我张贴它(https://stackoverflow.com/questions/45551455/does-this-interface-syntax-define-a-function-signature),你会帮助澄清。 – IcyBrk

相关问题