从 TypeScript 中覆盖的接口自动推断类型

ash*_*ays 5 javascript types typescript

我正在尝试为已经存在的模块创建一些 TypeScript 定义。在要实现的特定接口中,签名如下所示:

type NextFunction<T> = () => T;
type Response = string[] | Promise<string[]>;

interface IPage {
  getBodyClasses(next: NextFunction<Response>): Response;
}
Run Code Online (Sandbox Code Playgroud)

参数和返回结构是固定的,我真的希望能够让 TypeScript 推断出我重写的方法的参数类型。但是,当我创建覆盖时,我发现该参数隐式具有类型any

class Page implements IPage {
  getBodyClasses(next) {
    return next();
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以标记getBodyClasses为专用覆盖,以便自动推断参数的类型?如果我输入as ,它已经说不Page正确地实现了接口,所以我不太明白为什么它不能推断出 的类型与接口的类型相同。nextnumbernext

bas*_*rat 1

不支持已实现属性的上下文类型。

更多的

跟踪此问题的主要问题是https://github.com/Microsoft/TypeScript/issues/1373