TypeScript klases nodrošina skaidru un struk­tu­rē­tu veidu, kā organizēt datus un darbības objektā. Tas atvieglo jums modelēt vienības un jēdzienus savā kodā.

Kas ir TypeScript klases?

Klases ir galvenais jēdziens TypeScript, kas ir uz Ja­vaScript balstīta prog­ram­mē­ša­nas valoda. Klases ir struk­tu­rē­ta metode objektu de­fi­nē­ša­nai un ob­jek­to­rien­tē­tas prog­ram­mē­ša­nas (OOP) pie­mē­ro­ša­nai. TypeScript klases ir kā plāni objektu radīšanai, kas apvieno loģiski saistītus datus un metodes.

TypeScript satur visas Ja­vaScript funkcijas, kā arī statisko ti­pi­zā­ci­ju. Tas ļauj norādīt datu tipus TypeScript funkcijām, mai­nī­ga­jiem un klasēm, lai varētu atklāt kom­pi­lā­ci­jas kļūdas. Papildus tipu drošībai TypeScript klases atbalsta arī tādus jēdzienus kā pār­man­to­ša­na un abs­trak­ci­ja, kas atvieglo sarežģītu lie­to­jum­prog­ram­mu izstrādi.

Ar TypeScript klasēm var izveidot skaidru klašu hie­rar­hi­ju, kas pārmanto īpašības un metodes. Tas veicina koda atkārtotu iz­man­to­ša­nu un struk­tu­rē­ša­nu. Klases kons­truk­to­ri ļauj ini­cia­li­zēt instancēm un nodrošina kon­sek­ven­tu objektu izveidi.

Kāda ir TypeScript klašu sintakse?

TypeScript klašu notācija ir līdzīga ECMAScript 6 (ES6) notācijai un ir Ja­vaScript klašu sintakses pa­pla­ši­nā­ta versija. TypeScript klase var saturēt dažādus elementus, lai definētu objektu struktūru un uzvedību. Galvenās sa­stāv­da­ļas ir:

  • Īpašības
  • Kons­truk­to­ri
  • Metodes

Īpašības

Īpašības nosaka objekta stāvokli. Tās uzglabā datu vērtības un var tikt anotētas ar datu tipiem, lai tām būtu tikai derīgas vērtības.

class ClassName {
    propertyName: propertyType;
}
typescript
  • ClassName: klases nosaukums
  • pro­pertyNa­me: īpašības nosaukums, kuru vēlaties definēt
  • pro­pertyType: īpašības datu tips

Šeit ir konkrēts piemērs:

class Person {
    name: string;
}
typescript

Vispirms tiek definēta Person klase ar īpašību name tipa string. Tas nozīmē, ka Person klases instancēm ir name īpašība, kas glabā virknes.

Kons­truk­tors

Kons­truk­tors TypeScript ir īpaša metode, kas tiek izsaukta, kad tiek izveidots klases instances (objekts). Tas ir ne­pie­cie­šams, lai ini­cia­li­zē­tu objekta īpašības. Kons­truk­tors būtībā definē instances sākotnējo stāvokli. Kons­truk­to­rā var norādīt pa­ra­met­rus, lai nodotu vērtības, in­stan­cē­jot TypeScript klases.

TypeScript kons­truk­to­ra pamata sintakse ir:

class ClassName {
    constructor(parameter1: Type1, parameter2: Type2, ...) {
    }
}
typescript
  • kons­truk­tors: katrai klasei var būt viens kons­truk­tors. Ja kons­truk­tors nav definēts, pēc no­klu­sē­ju­ma tiek izveidots tukšs kons­truk­tors.
  • parametrs: Tips: parametri ir fa­kul­ta­tī­vi, atkarībā no klases un tās prasībām. Pa­ra­met­riem jābūt marķētiem ar to datu tipiem.

Kons­truk­to­ra piemērs:

class Person {
    firstName: string;
    lastName: string;
    constructor(firstName: string, lastName: string) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}
typescript

Iepriekš minētajā piemērā klasei Person ir kons­truk­tors, kas pieņem divus pa­ra­met­rus firstName un lastName. Iz­vei­do­jot šīs klases instanci, šie parametri tiek nodoti, un kons­truk­tors ini­cia­li­zē instances īpašības firstName un lastName ar at­bil­sto­ša­jām vērtībām. this attiecas uz klases pa­šrei­zē­jo instanci, kurā tiek izpildīts kods.

Metodes

TypeScript valodā metodes ir funkcijas, kuras var definēt klasēs un piemērot to instancēm. Metodes ļauj veikt noteiktas darbības vai ope­rā­ci­jas klases kontekstā.

class ClassName {
    // ...
    methodName(parameter1: Type1, parameter2: Type2, ...): ReturnType {
    }
    // ...
}
typescript
  • methodNa­me: metodes nosaukums
  • parametrs: Tips: fa­kul­ta­tī­vi parametri, kurus metode pieņem
  • Re­turnType: tas ir datu tips, kas nosaka vērtību, ko metode atgriež. Ja metode neko neatgriež, varat norādīt void.

Lai piekļūtu īpašībai vai izsauc metodi klases instancē, iz­man­to­jiet punktu operatoru ., kam seko metodes nosaukums un ne­pie­cie­ša­mie argumenti, ja metodei ir ne­pie­cie­ša­mi parametri.

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();
typescript

getFullName metode tiek izmantota, lai izveidotu un atgrieztu personas pilnu vārdu. Tā piekļūst firstName un lastName īpašību vērtībām, kas definētas klasē un ini­cia­li­zē­tas kons­truk­to­rā. Objekts person tiek izveidots ar at­slēg­vār­du new, kam seko klases nosaukums un at­tie­cī­gie parametri. Metode savieno abas virknes, kad tā tiek izsaukta, un atgriež pilnu vārdu kā virkni. Tādējādi objekta person izvade ir “John Doe”.

TypeScript klases piemēri

TypeScript klasēm ir dažādi mehānismi, lai or­ga­ni­zē­tu un kon­tro­lē­tu objektu struktūru un darbību. Tur­pi­nā­ju­mā mēs ie­pa­zīs­ti­nā­sim ar dažiem TypeScript klašu iz­man­to­ša­nas jē­dzie­niem.

Piekļuve

TypeScript piedāvā trīs piekļuves mo­di­fi­ka­to­rus: public, private un protected, lai kon­tro­lē­tu piekļuvi īpašībām un metodēm klasē un ārpus tās.

  • public (standarts): īpašības un metodes, kas atzīmētas ar public, var izsaukt no jebkuras vietas, gan klasē, gan ārpus tās.
  • privāts: private attiecas uz īpašībām un metodēm, kuras var izsaukt tikai pašā klasē. Tās nav pieejamas ārējām koda daļām.
  • aiz­sar­gāts: īpašības un metodes, kas atzīmētas ar protected, var izsaukt pati klase un at­va­si­nā­tās klases (pār­man­to­ša­nā), bet ne ārējais kods.
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();
typescript

Šajā piemērā socialSecurityNumber ir privāta īpašība, kurai var piekļūt tikai Person klasē. Tomēr metodi greet var izsaukt no ārpuses klases.

Mantojums

Pār­man­to­ša­na ir fun­da­men­tāls jēdziens ob­jek­to­rien­tē­tā prog­ram­mē­ša­nā (OOP), kas tiek izmantots TypeScript un daudzās citās interneta prog­ram­mē­ša­nas valodās. Tas ļauj izveidot jaunu klasi, pa­ma­to­jo­ties uz esošo bāzes klasi vai su­perkla­si. At­va­si­nā­tā klase (ap­akš­kla­se) pārmanto bāzes klases īpašības un metodes un var tās pa­pla­ši­nāt vai pielāgot.

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();
typescript

Iz­man­to­jot at­slēg­vār­du extends, ap­akš­kla­se Dog pārmanto īpašības un metodes no virskla­ses Animal. Klase Dog pārraksta metodi makeSound, lai pie­vie­no­tu konkrētu darbību, vien­lai­kus pār­man­to­jot īpašību name no Animal.

Tikai lasīšanai

Jūs varat izmantot readonly, lai deklarētu TypeScript klases vai objektu īpašības kā tikai lasāmas. Tas nozīmē, ka, tiklīdz tikai lasāmā īpašība ir ini­cia­li­zē­ta, tās vērtību vairs nevar mainīt.

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
typescript

Mūsu piemērā īpašums pi ir tikai lasāms un tiek ini­cia­li­zēts kons­truk­to­rā. Pēc ini­cia­li­zā­ci­jas pi vairs nevar mainīt. Ja pēc ini­cia­li­zā­ci­jas mē­ģi­nā­siet mainīt pi vērtību, TypeScript radīs kom­pi­lā­ci­jas kļūdu.

117a1597efe473942f630cae75678a0b

6fe9ad4655c8a5b1928748d3fe74ed9a

d8f0a02ba8214fdd5d685d3903e5f4f9

b06e5dafac21d8aedd5ae2df9774a7fe

Go to Main Menu