Using TypeScript super()
The super call must supply all parameters for base class. The constructor is not inherited. Commented out artist because I guess it is not needed when doing like this.
class StreetArtist extends Artist {
constructor(
name: string,
age: number,
style: string,
location: string,
public medium: string,
public famous: boolean,
public arrested: boolean,
/*public art: Artist*/
){
super(name, age, style, location);
console.log(`instantiated ${this.name}. Are they famous? ${famous}. Are they locked up? ${arrested}`);
}
}
Or if you intended the art parameter to populate base properties, but in that case I guess there isn't really a need for using public on art parameter as the properties would be inherited and it would only store duplicate data.
class StreetArtist extends Artist {
constructor(
public medium: string,
public famous: boolean,
public arrested: boolean,
/*public */art: Artist
){
super(art.name, art.age, art.style, art.location);
console.log(`instantiated ${this.name}. Are they famous? ${famous}. Are they locked up? ${arrested}`);
}
}
alex bennett
I like javascript, arts and crafts, and data visualization.
Updated on June 22, 2020Comments
-
alex bennett almost 4 years
I am trying to extend a class in TypeScript. I keep receiving this error on compile: 'Supplied parameters do not match any signature of call target.' I have tried referencing the artist.name property in the super call as super(name) but is not working.
Any ideas and explanations you may have will be greatly appreciated. Thanks - Alex.
class Artist { constructor( public name: string, public age: number, public style: string, public location: string ){ console.log(`instantiated ${name}, whom is ${age} old, from ${location}, and heavily regarded in the ${style} community`); } } class StreetArtist extends Artist { constructor( public medium: string, public famous: boolean, public arrested: boolean, public art: Artist ){ super(); console.log(`instantiated ${this.name}. Are they famous? ${famous}. Are they locked up? ${arrested}`); } } interface Human { name: string, age: number } function getArtist(artist: Human){ console.log(artist.name) } let Banksy = new Artist( "Banksy", 40, "Politcal Graffitti", "England / Wolrd" ) getArtist(Banksy);