class Fruit {
constructor( public name : string, public weight : number){}
public saySomething(){
console.log("I'm healthy fruit")
}
}
class Apple extends Fruit{
constructor(name : string , weight : number, public price : number){
super(name,weight)
}
public saySomething() {
console.log("I'm cheep fruit and i cost : "+this.price)
}
public onlyAppleFun(){
console.log("Only for apple type")
}
}
class Banana extends Fruit{
constructor(name : string , weight : number, public quality : string){
super(name,weight)
}
public saySomething() {
console.log("I'm of goood quality : "+this.quality)
}
public onlyBananaFun(){
console.log("Only for banana type")
}
}
function whatsUp<T extends Fruit>( fruit : T) : T {
fruit.saySomething();
if(fruit['price']){ // this also should be checked in different way, how?
console.log("i'm here and i'm apple");
// i want to do (fruit as Apple).onlyAppleFun
}
fruit.name = name+"_edit";
return fruit;
}
var fruit = new Fruit("fruit",1);
var apple = new Apple("apple",2,2.35);
var banana = new Banana("Banana",3,"A");
var foo = whatsUp(fruit);
var foo1 = whatsUp(apple);
var foo2 = whatsUp(banana);
Prosty przykład klasa główna i dwie klasy po niej dziedziczącej.
w funkcji przyjmującej na wejście genneryka chciałbym się dobrać do funkcji dostępnej tylko dla danej klasy
Jak to uczynić ? ;)