Typescript:第一个“this”参数的用途是什么?

Fla*_*ken 5 typescript

我找到了以下方法的签名

export function retry<T>(this: Observable<T>, count: number = -1): Observable<T> {
  return higherOrder(count)(this) as Observable<T>;
}
Run Code Online (Sandbox Code Playgroud)

其中第一个参数是this并键入Observable<T>。虽然this输入参数似乎是错误的,但编译器接受这种语法,而且我已经见过这种模式几次了。有人可以解释它的目的是什么吗?

Fla*_*ken 2

来自文档

为函数指定 this 的类型 在类或接口中指定 this 的类型之后,函数和方法现在可以声明它们期望的 this 类型。

默认情况下,函数内 this 的类型是 any。从 TypeScript 2.0 开始,您可以提供显式的 this 参数。这些参数是假参数,位于函数参数列表的第一位:

function f(this: void) {
    // make sure `this` is unusable in this standalone function
}
Run Code Online (Sandbox Code Playgroud)