我想知道是否有人可以提供帮助?
我有一个需要从3rdparty扩展的类。扩展时,我需要动态传递数据-因此,这是一个类
class AuthGuardNew extends AuthGuard("Needs changing") {
}
所以我想做的就是这样
new AuthGuardNew("Something different")
在幕后会将“某些不同”传递给扩展类,而不是“需要更改”
如果我使用类似的构造函数
constructor(type:string) {
}
但是我已经扩展了该如何将其传递给AuthGuard?
有什么想法吗?
预先感谢
更新
如果我尝试做
export class AuthGuardNew extends AuthGuard {
constructor(type?: string) {
super(type)
}
我收到一个打字稿错误,指出这一点
Type'(type ?: string | undefined)=> Type'不是 构造函数类型。
答案 0 :(得分:0)
您只需在构造函数中调用super即可。
class AuthGuardNew extends AuthGuard {
constructor(type: string) {
super(type);
}
}
答案 1 :(得分:0)
长话短说,就是你做不到。 AuthGuard
是创建类而不是类的函数。在您知道type
的值之前,没有任何类可以扩展。
相反,一旦知道type
的值,您就可以创建一个构造类的新函数。
const AuthGuardNew = (type?: string) =>
class extends AuthGuard(type || 'Needs changing') {
// You are free to override anything you need, you are defining a class
myExtension(): number {
return 10;
}
}
AuthGuardNew
还是一个创建类而不是类的函数。
const SomethingDifferentAuthGuard = AuthGuardNew('Something different');
// SomethingDifferentAuthGuard is now a class that extends AuthGuard('Something different')
// so we can instantiate and use it as such
console.log(new SomethingDifferentAuthGuard().myExtension())