如何在打字稿中使用摘要class?
How to use abstract class in typescript?
在下面的代码中,我在实现抽象方法 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);
}
}
我收到以下错误:
Property 'getPrice' in type 'Binance' is not assignable to the same
property in base type 'Exchange'. Type '(coin: any, stable_coin:
any) => any' is not assignable to type '() => any'.ts(2416)
你也需要匹配抽象方法的参数。您派生的 classes 正在传递基 class.
中未定义的参数
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);
}
}
这是一个常见的 class 继承期望:覆盖方法应该具有与基本(超级)方法兼容的签名。
在这里你可以有例如abstract getPrice(coin: any, stable_coin: any)
在你的摘要 class.
或者,根据您的情况是否有意义,您的子方法的额外参数是可选的。
在下面的代码中,我在实现抽象方法 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);
}
}
我收到以下错误:
Property 'getPrice' in type 'Binance' is not assignable to the same property in base type 'Exchange'. Type '(coin: any, stable_coin: any) => any' is not assignable to type '() => any'.ts(2416)
你也需要匹配抽象方法的参数。您派生的 classes 正在传递基 class.
中未定义的参数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);
}
}
这是一个常见的 class 继承期望:覆盖方法应该具有与基本(超级)方法兼容的签名。
在这里你可以有例如abstract getPrice(coin: any, stable_coin: any)
在你的摘要 class.
或者,根据您的情况是否有意义,您的子方法的额外参数是可选的。