在以下代碼中,我在實作抽象方法 getPrice 時遇到錯誤。
abstract class Exchange {
public coins=[];
abstract getPrice();
}
class Binance extends Exchange {
getPrice(coin,stable_coin){
return axios.get(`https://api.binance.com/api/v3/avgPrice?symbol=${coin.symbol}${stable_coin.symbol}`).then(res=>res.data.price)
}
}
class Bittrex extends Exchange {
getPrice(coin,stable_coin){
return axios.get(`https://api.bittrex.com/api/v1.1/public/getticker?market=${stable_coin.symbol}-${coin.symbol}`).then(res=>res.data.result.Last);
}
}
我收到以下錯誤:
'Binance' 型別中的屬性 'getPrice' 不能分配給基本型別 'Exchange' 中的相同屬性。型別 '(coin: any, stable_coin: any) => any' 不可分配給型別 '() => any'.ts(2416)
uj5u.com熱心網友回復:
您還需要匹配抽象方法的引數。您的派生類正在傳遞未在基類中定義的引數。
abstract class Exchange {
public coins=[];
abstract getPrice(coin:any, stable_coin: any): any;
}
class Binance extends Exchange {
getPrice(coin: any, stable_coin: any): any {
return axios.get(`https://api.binance.com/api/v3/avgPrice?symbol=${coin.symbol}${stable_coin.symbol}`).then(res=>res.data.price)
}
}
class Bittrex extends Exchange {
getPrice(coin: any, stable_coin: any): any {
return axios.get(`https://api.bittrex.com/api/v1.1/public/getticker?market=${stable_coin.symbol}-${coin.symbol}`).then(res=>res.data.result.Last);
}
}
uj5u.com熱心網友回復:
這是一個常見的類繼承期望:重寫方法應該具有與基(超級)方法兼容的簽名。
在這里,您可以abstract getPrice(coin: any, stable_coin: any)在您的抽象類中使用。
或者,根據您的情況是否有意義,讓您的子方法的額外引數是可選的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/409400.html
標籤:
