Ty­peSc­ripti klassid pakuvad selget ja struk­tu­ree­ri­tud viisi andmete ja käitumise or­ga­ni­see­ri­miseks objektis. See liht­sus­tab teie koodis en­ti­teetide ja kont­sept­sioo­nide mo­del­lee­ri­mist.

Mis on Ty­peSc­ripti klassid?

Klassid on Ja­vaSc­rip­til põhineva prog­ram­mee­ri­mis­keele Ty­peSc­ripti võt­me­kont­sept­sioon. Klassid esindavad struk­tu­ree­ri­tud meetodit objektide de­fi­nee­ri­miseks ja ob­jek­to­rien­tee­ri­tud prog­ram­mee­ri­mise (OOP) ra­ken­da­miseks. Ty­peSc­ripti klassid on nagu objektide loomise joonised, mis koondavad loo­gi­li­selt seotud andmeid ja meetodeid.

Ty­peSc­ript sisaldab kõiki Ja­vaSc­ripti funkt­sioone ja lisaks ka staa­ti­list tüüpimist. See võimaldab määrata Ty­peSc­ripti funkt­sioo­nide, muutujate ja klasside and­me­tüü­bid, et saaksite tuvastada kom­pi­lee­ri­mise ajal tekkivaid vigu. Lisaks tüü­bi­kind­lu­sele toetavad Ty­peSc­ripti klassid ka selliseid kont­sept­sioone nagu pärimine ja abst­rakt­sioon, mis hõl­bus­ta­vad keerukate ra­ken­duste aren­da­mist.

Ty­peSc­ripti klas­si­dega saate luua selge klasside hierarhia, mis pärivad omadusi ja meetodeid. See soodustab koodi taas­ka­su­ta­mist ja struk­tu­ree­ri­mist. Klasside konst­ruk­to­rid või­mal­da­vad ins­tant­side alg­sea­dis­ta­mist ja tagavad objekti loomise jär­je­pi­de­vuse.

Mis on Ty­peSc­ripti klasside süntaks?

Ty­peSc­ripti klasside märkimine on sarnane EC­MASc­ript 6 (ES6) mär­ki­mi­sega ja on Ja­vaSc­ripti klas­si­sün­taksi laien­da­tud versioon. Ty­peSc­ripti klass võib sisaldada erinevaid elemente, mis määravad objektide struk­tuuri ja käitumise. Peamised kom­po­nen­did on:

  • Omadused
  • Konst­ruk­to­rid
  • Meetodid

Omadused

Omadused määravad objekti seisundi. Need sal­ves­ta­vad and­me­väär­tusi ja neile võib lisada and­me­tüü­bid, et neil oleksid ainult kehtivad väärtused.

class ClassName {
    propertyName: propertyType;
}
ty­pesc­ript
  • ClassName: klassi nimi
  • pro­perty­Name: mää­rat­le­tava omaduse nimi
  • pro­pertyType: omaduse andmetüüp

Siin on konk­reetne näide:

class Person {
    name: string;
}
ty­pesc­ript

Esiteks mää­rat­le­takse klass Person omadusega name tüübist string. See tähendab, et klassi Person ins­tant­si­del on omadus name, mis salvestab stringe.

Ehi­tus­et­te­võtja

Ty­peSc­ripti konst­ruk­tor on spet­siaalne meetod, mida kut­su­takse välja klassi instantsi (objekti) loomisel. Seda on vaja objekti omaduste alg­sea­dis­ta­miseks. Konst­ruk­tor määrab si­su­li­selt instantsi alg­sei­sundi. Konst­ruk­to­ris saab määrata pa­ra­meet­rid, et edastada väärtusi Ty­peSc­ripti klasside ins­tant­side loomisel.

Ty­peSc­ripti konst­ruk­tori põhiline süntaks on:

class ClassName {
    constructor(parameter1: Type1, parameter2: Type2, ...) {
    }
}
ty­pesc­ript
  • konst­ruk­tor: igal klassil võib olla üks konst­ruk­tor. Kui konst­ruk­to­rit ei ole mää­rat­le­tud, luuakse vaikimisi tühi konst­ruk­tor.
  • pa­ra­mee­ter: Tüüp: pa­ra­meet­rid on va­li­ku­li­sed, sõltuvalt klassist ja selle nõuetest. Pa­ra­meet­rid tuleks mär­gis­tada nende and­me­tüü­pi­dega.

Konst­ruk­tori näide:

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

Eespool toodud näites on klassil Person konst­ruk­tor, mis võtab vastu kaks pa­ra­meet­rit firstName ja lastName. Selle klassi instantsi loomisel edas­ta­takse need pa­ra­meet­rid ja konst­ruk­tor alg­sea­dis­tab instantsi omadused firstName ja lastName vastavate väär­tus­tega. this viitab klassi prae­gu­sele ins­tant­sile, milles kood täi­de­takse.

Meetodid

Ty­peSc­rip­tis on meetodid funkt­sioo­nid, mida saab klassides de­fi­nee­rida ja nende ins­tant­si­dele rakendada. Meetodid või­mal­da­vad teha teatud toi­min­guid või ope­rat­sioone klassi kon­teks­tis.

class ClassName {
    // ...
    methodName(parameter1: Type1, parameter2: Type2, ...): ReturnType {
    }
    // ...
}
ty­pesc­ript
  • met­hod­Name: meetodi nimi
  • parameter: tüüp: meetodi poolt akt­sep­tee­ri­ta­vad va­li­ku­li­sed pa­ra­meet­rid
  • Re­turnType: see on andmetüüp, mis määrab meetodi poolt ta­gas­ta­tava väärtuse. Kui meetod ei tagasta midagi, võite määrata void.

Omaduse juurde pää­se­miseks või klassi instantsi meetodi kut­su­miseks kasuta punk­ti­ope­raa­to­rit ., millele järgneb meetodi nimi ja vajalikud ar­gu­men­did, kui meetod eeldab pa­ra­meetreid.

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­pesc­ript

Meetodit getFullName ka­su­ta­takse isiku täisnime loomiseks ja ta­gas­ta­miseks. See pääseb ligi klassis mää­rat­le­tud ja konst­ruk­to­ris init­sia­li­see­ri­tud omaduste firstName ja lastName väär­tus­tele. Objekt person luuakse märk­sõ­naga new, millele järgneb klassi nimi ja vastavad pa­ra­meet­rid. Meetod ühendab kaks stringi, kui see kut­su­takse, ja tagastab täisnime stringina. Objekti person väljund on seega „John Doe”.

Ty­peSc­ripti klasside näited

Ty­peSc­ripti klassidel on mit­me­su­gu­sed meh­ha­nis­mid objektide struk­tuuri ja käitumise or­ga­ni­see­ri­miseks ja kont­rol­li­miseks. Allpool tut­vus­tame mõningaid Ty­peSc­ripti klasside ka­su­ta­mise põ­hi­mõt­teid.

Juur­de­pääs

Ty­peSc­ript pakub kolme juur­de­pääsu mo­di­fi­kaa­to­rit: public, private ja protected, et kont­rol­lida juur­de­pääsu klassi si­se­mis­tele ja välistele oma­dus­tele ja mee­to­di­tele.

  • avalik (standard): public märgitud omadused ja meetodid on kut­su­ta­vad kõikjal, nii klassi sees kui ka väl­jas­pool seda.
  • privaatne: private viitab oma­dus­tele ja mee­to­di­tele, mida saab kutsuda ainult klassi sees. Need on välistele koo­diosa­dele kät­te­saa­ma­tud.
  • kaitstud: protected märgitud omadusi ja meetodeid saab kutsuda klassi enda ja tuletatud klasside (pärimisel) poolt, kuid mitte välise koodi poolt.
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­pesc­ript

Selles näites on socialSecurityNumber privaatne omadus, millele on juur­de­pääs ainult klassis Person. Siiski on võimalik kutsuda meetodit greet väl­jas­pool klassi.

Pärandus

Pärimine on ob­jek­to­rien­tee­ri­tud prog­ram­mee­ri­mise (OOP) põ­hi­kont­sept­sioon, mida ka­su­ta­takse Ty­peSc­rip­tis ja paljudes teistes in­ter­ne­ti­prog­ram­mee­ri­mis­keel­tes. See võimaldab luua uue klassi ole­mas­oleva baas­klassi või su­per­klassi alusel. Tuletatud klass (alamklass) pärandab baas­klassi omadused ja meetodid ning võib neid laiendada või kohandada.

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­pesc­ript

Sõna extends abil pärandab alamklass Dog va­nem­klassi Animal omadused ja meetodid. Klass Dog asendab meetodi makeSound, et lisada konk­reetne käitumine, pä­ran­da­des samal ajal omaduse name klassist Animal.

Ainult lu­ge­miseks

Võite kasutada readonly, et dek­la­ree­rida Ty­peSc­ripti klasside või objektide omadused ainult lu­ge­miseks. See tähendab, et kui ainult lu­ge­miseks mõeldud omadus on algselt määratud, ei saa selle väärtust enam muuta.

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­pesc­ript

Meie näites on omadus pi ainult lu­ge­miseks ja see al­ga­ta­takse konst­ruk­to­ris. Pärast al­ga­ta­mist ei saa pi enam muuta. Kui proovite pärast al­ga­ta­mist muuta väärtust pi, tekitab Ty­peSc­ript kom­pi­lee­ri­mis­vea.

117a1597efe473942f630cae75678a0b

6fe9ad4655c8a5b1928748d3fe74ed9a

d8f0a02ba8214fdd5d685d3903e5f4f9

a55818b02fb97947381a63b7dd2e4708

Go to Main Menu