typescript - Hvilken fordel gir get-funksjoner i konteksten av Angular 4-komponenter?


Jeg er nysgjerrig på hva forskjellen mellom disse to funksjonene ville være i Angular 4:

get currentIndex(): number {
  return `Current Index is ${this.index}`;
}

public currentIndex(): number {
  return `Current Index is ${this.index}`;
}

Gjør de akkurat det samme? Hvis ja, når ville de gjort noe annerledes?

Svar #1

De er stort sett det samme, bortsett fra at funksjoner/metoder pleier å innebære en beregning. Så når du bare får tilgang til data (som indeksen i dette tilfellet), kan en funksjon virke merkelig eller fremstå som overdrevet.

Å bruke en getter er på en måte det beste fra to verdener. Det ser ut som enkel data-tilgang - currentIndex versus currentIndex() - samtidig som det lar deg legge til logikk senere hvis du trenger å gjøre noe som en beregning.

Teknisk sett er de forskjellige, og du kan bruke TypeScript PlayGround for å se hvordan de kompileres ned til forskjellig kode.

Svar #2

getter/setter er mer relatert til egenskaper enn metoder, så det er bedre å sammenligne getter/setter med vanlig egenskap.

og å påkalle getter/setter er det samme som en normal egenskap, å implementere kun getter betyr skrivebeskyttet egenskap og å implementere kun setter betyr skrivebilde egenskap.

getter og setter legger til et ekstra lag for å samhandle direkte med egenskapen, for eksempel

class Person {
 private _age:number;
 public get age() {
   //... do something 
   retutn this._age; 
 }

 public set age(value) {
   if (value >0){
    this._age = value
   }
 }
}

Fra eksemplet ovenfor forhindrer vi å tildele en ugyldig verdi til alder.

i Angular, hvis vi vil vise en getter i malen for alder for eksempel slik {{age}}, men hvis alder er en funksjon vil det være slik {{age()}}

Som jeg nevnte tidligere, er det bedre å tenke på getter/setter som en egenskap mer enn en metode

fra ditt eksempel

get currentIndex(): number {
  return `Current Index is ${this.index}`;
}

Denne getteren ovenfor kan gi verdien fra tjenesten eller beregnet verdi fra en annen egenskap og vil se ut som en vanlig egenskap

setter, getter

Relaterte artikler