TypeScript类A的方法,作为B方法的传递方式

时间:2017-10-02 16:16:57

标签: javascript typescript composition function-composition

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

是否有更简洁的方式来重定向"身份验证的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...

}

1 个答案:

答案 0 :(得分:1)

以昂贵的灵活性,您可以通过使用作业来节省一些打字:

import * as a0 from "auth0-js";

export class Authentication {

  constructor(private wa: a0.Authentication) { }

  buildLogoutUrl = this.wa.buildLogoutUrl;

}

通过“灵活性”,我的意思是您不能更改函数签名或对参数执行任何预处理,例如。此外,您的类不再具有您控制的固定公共接口(假设库的作者更改了函数签名)。