Typescript: Kalle på en "metode" fra en annen klasse
Jeg er ganske ny på Java-/TypeScript og jeg har noen problemer med å forstå konseptene deres. Jeg vil gjerne kalle en metode i en annen klasse. Imidlertid har jeg ikke hatt suksess så langt.
export class Foo {
calcSomeThing(parameter:number): number {
//stuff
}
}
class Bar {
var foo:Foo = new Foo();
calcOtherThing() {
result = foo.calcSomething(parameter)
}
}
Hva er den riktige måten å kalle calcSomething på foo fra calcOtherThing?
rediger: la til en forekomst av foo
Svar #1
Det er flere problemer med koden din.
- Typescript er følsom for store og små bokstaver. Så "calcSomething" og "calcSomeThing" er to forskjellige metoder.
- Den eneste måten å få tilgang til cals metoder og egenskaper på, er gjennom «this»-nøkkelordet: this.foo
- For å definere klasseegenskap, bruk private/protected/public-modifikator. Eller ingen modifikator i det hele tatt (det vil være det samme som public). Så ingen ting som "var foo" i klassekroppen.
Med dette tatt i betraktning ville den faste koden se slik ut:
export class Foo
{
calcSomeThing(parameter:number): number
{
//Stuff
}
}
class Bar
{
private foo:Foo = new Foo();
calcOtherThing(parameter: number): number
{
return this.foo.calcSomeThing(parameter)
}
}
Svar #2
calcSomeThing er en ikke-statisk metode/funksjon. Opprett en instans av Foo for å kunne kalle den:
let foo:Foo = new Foo();
let result:number = foo.calcSomeThing( parameter );
Bruk aldri var i Typescript - let er din venn.
