angular - Typescript getter/setter namngivningskonvention


Jag kommer från en Java-bakgrund och jag använde som standard getter/setter-namnkonventioner i mina Typescript/Angular-komponentklasser som var bekanta för mig.

getFoo()

setFoo()

Men det verkar som att detta kanske inte är bästa praxis, utan att jag istället borde använda konventionen

get foo()

set foo()

Frågor

  • Är detta rent kosmetiskt? Finns det några fördelar? Jag förstår inte varför detta skulle föredras eftersom det, enligt min förståelse, inte är konsekvent med namngivningskonventionen som används för andra metoder.
  • Finns det en formell stilguide som rekommenderar denna praxis?

Svar #1

Vi kan använda get, set där vi behöver implementera vissa begränsningar när ett värde nås.

Från Typescript-dokumentationen:

TypeScript stöder getters/setters som ett sätt att avlyssna åtkomst till en medlemsvariabel i ett objekt. Detta ger dig ett sätt att ha mer detaljerad kontroll över hur en medlemsvariabel nås på varje objekt.

Exempel :

class StudentMark {
    isPass: boolean;
    _mark: Mark;
    set mark(value: Mark) {
        if (value.subject1 > 35 && value.subject2 > 35&& value.subject3 > 35) { 
             this.isPass = true;
        } else {
             this.isPass = false;
        }
        this._mark = value;
    }
   get mark(): Mark {
       return this._mark;
   }
}

Här, varje gång vi sätter markeringen, kommer passet att uppdateras. Ingen anledning att uppdatera det separat. I detta kommer typer av fall där get, set är användbara.

Suffix på get och set bör ha samma namn. Och vi kan komma åt det endast genom att anropa namnet självt. Exempel, mark från ovanstående kod.

För mer om get, set, besök TypeScript-dokumentationen.

Svar #2

TypeScript är en superset av JavaScript och all språkets syntax är mycket lik ECMAScript-standarden eftersom programmeraren känner sig bättre när de skriver JavaScript-applikationer.

SET, GET-egenskap på TS & JS mycket lik

JS

class JSExample {
    constructor() {
        this._val = "V";
    }
    get val() {
        return this._val;
    }
    set val($v) {
        this._val = $v;
    }
}

TS

class TSExample {
    _val = "V";

    get val(): string {
        return this._val;
    }
    set val($v: string) {
        this._val = $v;
    }
}

Relaterade artiklar