this
指的是当前可用类型。
它也可能是被重写的类或接口的子类型。
示例:
class Calculator {
a: number;
add(): this {
a++;
return this;
}
}
class AdvancedCalculator {
substract(): this {
a--;
return this;
}
}
new AdvancedCalculator()
.add() // returns AdvancedCalculator as "this"
.substact() // it compiles!
<this>
...这是我有点困惑的部分。 - Eric Liprandi我认为在你的例子中,<this>
指的是当前实现接口的类型。例如,如果 TestClass 类实现了 IRouter 接口,则返回 IRouterMatcher<this>
的函数将返回一个 IRouterMatcher<TestClass>
。
经过更多的研究,使用 <this>
可能在功能上等同于说 <T extends IRouter>
,比如 all: IRouterMatch<T extends IRouter>
。使用 this
只是一种更简短的表达方式。
this
指的是接口本身(在这种情况下,是IRouter
)。 - Frank ModicaIRouterMatcher<T>
接口,我发现它的签名是(path: PathParams, ...handlers: RequestHandler[]): T;
(其中一个 - 使用重载)。所以,IRouterMatcher<T>
中的<T>
将是this
的类型? - Eric Liprandi