我正在尝试将第三方库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...
}
答案 0 :(得分:1)
以昂贵的灵活性,您可以通过使用作业来节省一些打字:
import * as a0 from "auth0-js";
export class Authentication {
constructor(private wa: a0.Authentication) { }
buildLogoutUrl = this.wa.buildLogoutUrl;
}
通过“灵活性”,我的意思是您不能更改函数签名或对参数执行任何预处理,例如。此外,您的类不再具有您控制的固定公共接口(假设库的作者更改了函数签名)。