Kā definēt un izmantot TypeScript klases
TypeScript klases nodrošina skaidru un strukturē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 JavaScript balstīta programmēšanas valoda. Klases ir strukturēta metode objektu definēšanai un objektorientētas programmēšanas (OOP) piemērošanai. TypeScript klases ir kā plāni objektu radīšanai, kas apvieno loģiski saistītus datus un metodes.
TypeScript satur visas JavaScript funkcijas, kā arī statisko tipizāciju. Tas ļauj norādīt datu tipus TypeScript funkcijām, mainīgajiem un klasēm, lai varētu atklāt kompilācijas kļūdas. Papildus tipu drošībai TypeScript klases atbalsta arī tādus jēdzienus kā pārmantošana un abstrakcija, kas atvieglo sarežģītu lietojumprogrammu izstrādi.
Ar TypeScript klasēm var izveidot skaidru klašu hierarhiju, kas pārmanto īpašības un metodes. Tas veicina koda atkārtotu izmantošanu un strukturēšanu. Klases konstruktori ļauj inicializēt instancēm un nodrošina konsekventu 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 JavaScript klašu sintakses paplašināta versija. TypeScript klase var saturēt dažādus elementus, lai definētu objektu struktūru un uzvedību. Galvenās sastāvdaļas ir:
- Īpašības
- Konstruktori
- 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
- propertyName: īpašības nosaukums, kuru vēlaties definēt
- propertyType: īpašības datu tips
Šeit ir konkrēts piemērs:
class Person {
name: string;
}typescriptVispirms 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.
Konstruktors
Konstruktors TypeScript ir īpaša metode, kas tiek izsaukta, kad tiek izveidots klases instances (objekts). Tas ir nepieciešams, lai inicializētu objekta īpašības. Konstruktors būtībā definē instances sākotnējo stāvokli. Konstruktorā var norādīt parametrus, lai nodotu vērtības, instancējot TypeScript klases.
TypeScript konstruktora pamata sintakse ir:
class ClassName {
constructor(parameter1: Type1, parameter2: Type2, ...) {
}
}typescript- konstruktors: katrai klasei var būt viens konstruktors. Ja konstruktors nav definēts, pēc noklusējuma tiek izveidots tukšs konstruktors.
- parametrs: Tips: parametri ir fakultatīvi, atkarībā no klases un tās prasībām. Parametriem jābūt marķētiem ar to datu tipiem.
Konstruktora piemērs:
class Person {
firstName: string;
lastName: string;
constructor(firstName: string, lastName: string) {
this.firstName = firstName;
this.lastName = lastName;
}
}typescriptIepriekš minētajā piemērā klasei Person ir konstruktors, kas pieņem divus parametrus firstName un lastName. Izveidojot šīs klases instanci, šie parametri tiek nodoti, un konstruktors inicializē instances īpašības firstName un lastName ar atbilstošajām vērtībām. this attiecas uz klases pašreizē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 operācijas klases kontekstā.
class ClassName {
// ...
methodName(parameter1: Type1, parameter2: Type2, ...): ReturnType {
}
// ...
}typescript- methodName: metodes nosaukums
- parametrs: Tips: fakultatīvi parametri, kurus metode pieņem
- ReturnType: 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ē, izmantojiet punktu operatoru ., kam seko metodes nosaukums un nepieciešamie argumenti, ja metodei ir nepieciešami 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();typescriptgetFullName 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 inicializētas konstruktorā. Objekts person tiek izveidots ar atslēgvārdu new, kam seko klases nosaukums un attiecī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 organizētu un kontrolētu objektu struktūru un darbību. Turpinājumā mēs iepazīstināsim ar dažiem TypeScript klašu izmantošanas jēdzieniem.
Piekļuve
TypeScript piedāvā trīs piekļuves modifikatorus: public, private un protected, lai kontrolē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:
privateattiecas uz īpašībām un metodēm, kuras var izsaukt tikai pašā klasē. Tās nav pieejamas ārējām koda daļām. - aizsargāts: īpašības un metodes, kas atzīmētas ar
protected, var izsaukt pati klase un atvasinātās klases (pārmantošanā), 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ārmantošana ir fundamentāls jēdziens objektorientētā programmēšanā (OOP), kas tiek izmantots TypeScript un daudzās citās interneta programmēšanas valodās. Tas ļauj izveidot jaunu klasi, pamatojoties uz esošo bāzes klasi vai superklasi. Atvasinātā klase (apakšklase) pārmanto bāzes klases īpašības un metodes un var tās paplašinā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();typescriptIzmantojot atslēgvārdu extends, apakšklase Dog pārmanto īpašības un metodes no virsklases Animal. Klase Dog pārraksta metodi makeSound, lai pievienotu konkrētu darbību, vienlaikus pārmantojot ī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 inicializē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,54typescriptMūsu piemērā īpašums pi ir tikai lasāms un tiek inicializēts konstruktorā. Pēc inicializācijas pi vairs nevar mainīt. Ja pēc inicializācijas mēģināsiet mainīt pi vērtību, TypeScript radīs kompilācijas kļūdu.
117a1597efe473942f630cae75678a0b
6fe9ad4655c8a5b1928748d3fe74ed9a
d8f0a02ba8214fdd5d685d3903e5f4f9
b06e5dafac21d8aedd5ae2df9774a7fe