我有一个类MyClass,它使用另一个类MainProvider.问题是普通的MainProviderclass不能像我想要的那样工作,所以我创建了另一个类MyProvider,它具有相同的功能(实现与Provider相同的接口).
我的问题是,我不能在我的类(MyClass)中使用MyProvider,因为即使类MyProvider实现相同的接口,也存在与属性(此处为getFetchUrl)不匹配的情况.
它是MainProvider类中的私有属性,因此它不在接口中.但是,我不能在我的类中使用MyProvider.我收到以下错误:
我怎样才能用一个来代替另一个?
例子:
declare abstract class ProviderInterface {
abstract baseUrl: string;
abstract foo(): void;
}
class MainProvider implements ProviderInterface {
baseUrl: string;
private getFetchUrl: string;
constructor(baseUrl: string) {
this.baseUrl = baseUrl;
}
foo() {
return "hello";
}
}
class MyProvider implements ProviderInterface {
private _baseUrl: string;
private getFetchUrl: string;
constructor(baseUrl: string) {
this._baseUrl = baseUrl;
}
foo() {
return "hey";
}
get baseUrl() {
return this._baseUrl;
}
}
class MyClassUsingProvider {
private _provider: MainProvider;
constructor(provider: MainProvider) {
this._provider = provider;
}
}
const myProvider = new MyProvider("http://127.0.0.1:3000");
const myClass = new MyClassUsingProvider(myProvider);