我们在应用程序中将express
与TypeScript一起使用。我遇到了他们的类型定义,想知道以下是什么意思:
export interface IRouter extends RequestHandler {
all: IRouterMatcher<this>;
}
尤其是IRouterMatcher<this>
。
我看了几次文档,找不到任何提及此用例的东西。而且,由于通常会去除尖括号,因此很难在SO或网络中搜索<this>
。
答案 0 :(得分:3)
this
是指当前可用的类型。
这也可能是重写的类或接口的子类型。
另请参见https://www.typescriptlang.org/docs/handbook/advanced-types.html
中的该类型多形示例:
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!
答案 1 :(得分:0)
在您的示例中,我相信<this>
是指当前正在实现接口的类型。例如,如果名为TestClass的类实现了IRouter,则返回IRouterMatcher<this>
的函数将返回IRouterMatcher<TestClass>
。
进行更多研究后,使用<this>
在功能上等效于说<T extends IRouter>
,例如all: IRouterMatch<T extends IRouter>
。使用this
可能只是表达同一件事的一种较短方法。