Ty­pe­Script-klasser erbjuder ett tydligt och struk­tu­re­rat sätt att or­ga­ni­se­ra data och beteenden i ett objekt. Detta gör det enklare för dig att modellera enheter och begrepp i din kod.

Vad är Ty­pe­Script-klasser?

Klasser är ett nyc­kel­be­grepp i Ty­pe­Script, som är ett pro­gram­me­rings­språk baserat på Ja­va­Script. Klasser re­pre­sen­te­rar en struk­tu­re­rad metod för att definiera objekt och för att tillämpa ob­jek­t­o­ri­en­te­rad pro­gram­me­ring (OOP). Ty­pe­Script-klasser är som ritningar för att skapa objekt som samlar logiskt re­la­te­ra­de data och metoder.

Ty­pe­Script in­ne­hål­ler alla funk­tio­ner i Ja­va­Script och in­klu­de­rar även statisk typning. Detta gör att du kan ange datatyper för Ty­pe­Script-funk­tio­ner, variabler och klasser så att du kan upptäcka kom­pi­le­rings­fel. Förutom typ­sä­ker­het stöder Ty­pe­Script-klasser även begrepp som arv och ab­strak­tion, vilket un­der­lät­tar ut­veck­ling­en av komplexa ap­pli­ka­tio­ner.

Med Ty­pe­Script-klasser kan du skapa en tydlig hierarki av klasser som ärver egen­ska­per och metoder. Detta främjar åter­an­vänd­ning och struk­tu­re­ring av kod. Klass­kon­struk­to­rer gör det möjligt att ini­ti­a­li­se­ra instanser och sä­ker­stäl­ler kon­se­kvent ob­jekt­ska­pan­de.

Vad är syntaxen för Ty­pe­Script-klasser?

No­ta­tio­nen för Ty­pe­Script-klasser liknar den i ECMA­Script 6 (ES6) och är en utökad version av Ja­va­Script-klass­syn­tax­en. En Ty­pe­Script-klass kan innehålla olika element för att definiera objektens struktur och beteende. De vik­ti­gas­te kom­po­nen­ter­na är:

  • Egen­ska­per
  • Kon­struk­tö­rer
  • Metoder

Egen­ska­per

Egen­ska­per bestämmer ett objekts tillstånd. De lagrar data­vär­den och kan förses med datatyper så att de endast har giltiga värden.

class ClassName {
    propertyName: propertyType;
}
ty­pe­script
  • ClassName: namnet på klassen
  • pro­per­ty­Na­me: namnet på den egenskap som du vill definiera
  • pro­per­ty­Ty­pe: egen­ska­pens datatyp

Här är ett konkret exempel:

class Person {
    name: string;
}
ty­pe­script

Först de­fi­nie­ras en klass Person med en egenskap name av typ string. Detta innebär att instanser av klassen Person har en egenskap name som lagrar strängar.

Kon­struk­tör

Kon­struk­torn i Ty­pe­Script är en speciell metod som anropas när en klass­in­stans (objekt) skapas. Du behöver den för att ini­ti­a­li­se­ra egen­ska­per­na hos ett objekt. Kon­struk­torn de­fi­ni­e­rar i huvudsak in­stan­sens initiala tillstånd. Du kan ange pa­ra­met­rar i kon­struk­torn för att överföra värden när du in­stan­si­e­rar Ty­pe­Script-klasser.

Den grund­läg­gan­de syntaxen för en kon­struk­tör i Ty­pe­Script är:

class ClassName {
    constructor(parameter1: Type1, parameter2: Type2, ...) {
    }
}
ty­pe­script
  • kon­struk­tör: varje klass kan ha en enda kon­struk­tör. Om ingen kon­struk­tör de­fi­nie­ras skapas en tom kon­struk­tör som standard.
  • parameter: Typ: pa­ra­met­rar är valfria, beroende på klassen och dess krav. Pa­ra­met­rar bör märkas med sina datatyper.

Ett exempel på en kon­struk­tör:

class Person {
    firstName: string;
    lastName: string;
    constructor(firstName: string, lastName: string) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}
ty­pe­script

I exemplet ovan har klassen Person en kon­struk­tor som ac­cep­te­rar två pa­ra­met­rar, firstName och lastName. När en instans av denna klass skapas överförs dessa pa­ra­met­rar, och kon­struk­torn ini­ti­a­li­se­rar in­stan­sens egen­ska­per firstName och lastName med mot­sva­ran­de värden. this refererar till den aktuella instansen av klassen som koden exekveras på.

Metoder

I Ty­pe­Script är metoder funk­tio­ner som kan de­fi­nie­ras i klasser och tillämpas på deras instanser. Metoder gör det möjligt att utföra vissa åtgärder eller ope­ra­tio­ner i en klass.

class ClassName {
    // ...
    methodName(parameter1: Type1, parameter2: Type2, ...): ReturnType {
    }
    // ...
}
ty­pe­script
  • met­hod­Na­me: metodens namn
  • parameter: Typ: valfria pa­ra­met­rar som metoden ac­cep­te­rar
  • Re­turn­Ty­pe: detta är datatypen som bestämmer värdet som metoden re­tur­ne­rar. Om metoden inte re­tur­ne­rar något kan du ange void.

För att komma åt en egenskap eller anropa en metod på en klass­in­stans använder du punk­to­pe­ra­torn . följt av me­tod­nam­net och de nöd­vän­di­ga ar­gu­men­ten om metoden förväntar sig pa­ra­met­rar.

class Person {
    firstName: string;
    lastName: string;
    constructor(firstName: string, lastName: string) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
    getFullName(): string {
        return this.firstName + " " + this.lastName;
    }
}
const person = new Person("John", "Doe");
const fullName = person.getFullName();
ty­pe­script

Metoden getFullName används för att skapa och returnera personens full­stän­di­ga namn. Den hämtar värdena för egen­ska­per­na firstName och lastName som de­fi­nie­ras i klassen och ini­ti­a­li­se­ras i kon­struk­torn. Objektet person skapas med nyc­kelor­det new följt av klass­nam­net och re­spek­ti­ve pa­ra­met­rar. Metoden sam­man­fo­gar de två sträng­ar­na när den anropas och re­tur­ne­rar det full­stän­di­ga namnet som en sträng. Ut­mat­ning­en för objektet person blir därför ”John Doe”.

Exempel på Ty­pe­Script-klasser

Ty­pe­Script-klasser har olika me­ka­nis­mer för att or­ga­ni­se­ra och styra objektens struktur och beteende. Nedan pre­sen­te­rar vi några begrepp för an­vänd­ning av Ty­pe­Script-klasser.

Tillgång

Ty­pe­Script erbjuder tre åt­komst­mo­di­fi­e­ra­re: public, private och protected för att kon­trol­le­ra åtkomsten till egen­ska­per och metoder inom och utanför klassen.

  • public (standard): egen­ska­per och metoder markerade med public kan anropas från var som helst, både inom och utanför klassen.
  • privat: private avser egen­ska­per och metoder som endast kan anropas inom själva klassen. De är otill­gäng­li­ga för externa koddelar.
  • skyddad: egen­ska­per och metoder markerade med protected kan anropas av klassen själv och av härledda klasser (i arv), men inte av extern kod.
class Person {
    private socialSecurityNumber: string;
    constructor(ssn: string) {
        this.socialSecurityNumber = ssn;
    }
    greet() {
        console.log("Hello, I am a person with SSN: " + this.socialSecurityNumber);
    }
}
const person = new Person("123-45-6789");
person.greet();
ty­pe­script

I det här exemplet är socialSecurityNumber en privat egenskap som endast kan nås inom klassen Person. Du kan dock anropa metoden greet utanför klassen.

Arv

Arv är ett grund­läg­gan­de begrepp inom ob­jek­t­o­ri­en­te­rad pro­gram­me­ring (OOP) som används i Ty­pe­Script och många andra pro­gram­me­rings­språk för internet. Det gör det möjligt att skapa en ny klass utifrån en befintlig basklass eller su­per­klass. Den härledda klassen (un­der­klas­sen) ärver bas­klas­sens egen­ska­per och metoder och kan utöka eller anpassa dem.

class Animal {
    name: string;
    constructor(name: string) {
        this.name = name;
    }
    makeSound() {
        console.log("Some generic sound");
    }
}
class Dog extends Animal {
    makeSound() {
        console.log(this.name + " barks");
    }
}
const myDog = new Dog("Buddy");
myDog.makeSound();
ty­pe­script

Med hjälp av nyc­kelor­det extends ärver un­der­klas­sen Dog egen­ska­per­na och metoderna från över­klas­sen Animal. Klassen Dog över­skri­ver metoden makeSound för att lägga till ett specifikt beteende samtidigt som den ärver egen­ska­pen name från Animal.

Skriv­skyd­dad

Du kan använda readonly för att deklarera egen­ska­per hos Ty­pe­Script-klasser eller objekt som skriv­skyd­da­de. Detta innebär att när en skriv­skyd­dad egenskap har ini­ti­a­li­se­rats kan dess värde inte längre ändras.

class Circle {
    readonly pi: number = 3.14159;
    radius: number;
    constructor(radius: number) {
        this.radius = radius;
    }
    getArea() {
        return this.pi    *this.radius*    this.radius;
    }
}
const myCircle = new Circle(5);
console.log(myCircle.getArea()); // Output: ≈ 78,54
ty­pe­script

I vårt exempel är egen­ska­pen pi skriv­skyd­dad och ini­ti­a­li­se­ras i kon­struk­torn. Efter ini­ti­a­li­se­ring­en kan pi inte längre ändras. Om du försöker ändra värdet på pi efter ini­ti­a­li­se­ring­en genererar Ty­pe­Script ett kom­pi­le­rings­fel.

Gå till huvudmeny