TypeScript class A 的方法作为 B 方法的传递

TypeScript class A's method to work as a pass-through to a B's method

我正在尝试将第三方库 auth0-js 包装到我自己的 class 中。在下面的示例中,来自 Auth0.js 的 Authentication class 被包装并用作传递方法的实现。看看 buildLogoutUrl(options) 只是在包装对象上调用一个函数。

有没有更简洁的方法"redirect" Authentication 的 buildLogoutUrl(...) 到 wa 的 buildLogoutUrl(...) 继承?

import * as a0 from "auth0-js";

export class Authentication {

  constructor(private wa: a0.Authentication) { }

  buildLogoutUrl(options?: a0.LogoutOptions | undefined): string {
    return this.wa.buildLogoutUrl(options);
  }

  // Many other methods...

}

以牺牲灵活性为代价,您可以通过使用赋值来节省一点打字时间:

import * as a0 from "auth0-js";

export class Authentication {

  constructor(private wa: a0.Authentication) { }

  buildLogoutUrl = this.wa.buildLogoutUrl;

}
例如,

"flexibility" 的意思是您不能更改函数签名或对参数执行任何预处理。此外,您的 class 不再具有您控制的固定 public 接口(假设库的作者更改了函数签名)。