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.

  1. Typescript er følsom for store og små bokstaver. Så "calcSomething" og "calcSomeThing" er to forskjellige metoder.
  2. Den eneste måten å få tilgang til cals metoder og egenskaper på, er gjennom «this»-nøkkelordet: this.foo
  3. 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.

Relaterte artikler