Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Nosaukšanas sadursme notiek, ja divi vai vairāki koda komponenti izmanto vienu un to pašu nosaukumu mainīgajam, funkcijai vai klasei. Tās ir izplatītas lielos projektos, kur daudzi cilvēki strādā vienā kodu bāzē. Tie var apgrūtināt noteikšanu, kurš koda komponents ir atbildīgs par kļūdām.

Izmantojot nosaukumvietas, varat kārtot un pārvaldīt savu kodu, lai saistīto komponentu grupas atrastos zem kopēja identifikatora. Tas mazinās nosaukumu konfliktu risku.

Nosaukumvietas izveide

Varat izveidot nosaukumvietas programmā TypeScript, izmantojot nosaukumvieta atslēgvārds. Sekojiet tai ar identifikatoru, lai nosauktu nosaukumvietu, un bloku, ko aptver cirtaini iekavas. Sintakse ir līdzīga tai, kuru izmantojāt izveidot klasi JavaScript.

Piemēram:

nosaukumvieta Piemērs {}

Pēc tam nosaukumvietas blokā varat deklarēt nosaukumvietas dalībniekus — mainīgos, funkcijas un klases:

instagram viewer
nosaukumvieta Piemērs {
eksportētfunkcijuFoo(): nederīgs{
konsole.log("Šī ir funkcija Piemēra nosaukumvietā");
}

eksportētklasē Bārs {
īpašums: virkne;

konstruktors(īpašums: virkne) {
šis.īpašums = īpašums;
}
}

eksportētkonst baz = "Šis ir nosaukumvietas mainīgais"
}

Iepriekš minētajā piemērā Foo, Bārs, un baz ir biedri Piemērs nosaukumvieta. Pēc noklusējuma varat piekļūt tikai nosaukumvietas dalībniekiem tajā pašā nosaukumvietā. Izmantojiet eksportēt atslēgvārds, lai katrs nosaukumvietas dalībnieks būtu pieejams ārpus tās.

Varat piekļūt visiem publiski pieejamajiem nosaukumvietas dalībniekiem, izsaucot nosaukumvietas dalībnieka nosaukumu, izmantojot punktu apzīmējumu:

Piemērs.foo(); // Šī ir funkcija Piemēra nosaukumvietā

konst josla = jauns Piemērs. Bārs("string");
konsole.log (bar.property); // virkne

konsole.log (Example.baz); // Šis ir nosaukumvietas mainīgais

Ligzdošanas nosaukumvietas

TypeScript ļauj ligzdot nosaukumvietas citās nosaukumvietās, lai izveidotu hierarhisku koda struktūru. Nosaukumvietu ligzdošana var vēl vairāk samazināt nosaukumu sadursmju risku, grupējot saistītās nosaukumvietas zem kopēja identifikatora.

Piemēram:

nosaukumvieta Piemērs {
eksportētkonst īpašums_1 = "Foo";

eksportētnosaukumvieta Bārs {
eksportētkonst printFoo = funkciju () {
konsole.log (īpašums_1);
};
}

eksportētnosaukumvieta Baz {
eksportētklasē Foo {
īpašums: virkne;

konstruktors(īpašums: virkne) {
šis.īpašums = īpašums;
}
}
}
}

Iepriekš minētajā koda blokā ir sniegts ligzdotas nosaukumvietas piemērs. The Piemērs nosaukumvieta ir augstākā līmeņa nosaukumvieta, kas satur Bārs nosaukumvieta un Baz nosaukumvieta.

Jūs varat piekļūt rekvizītiem ligzdotajā nosaukumvietā, izmantojot punktu apzīmējumu, kas atbilst jūsu izveidotajai hierarhiskajai struktūrai.

Piemēram:

konsole.log (Piemērs.īpašums_1); // Fū
Piemērs. Bar.printFoo() // Fū
konst foo = jauns Piemērs. Baz. Foo("piemērs")

Šis parauga kods piekļūst katram nosaukumvietas dalībniekam, izmantojot vecāku nosaukumvietu. Piekļūstot īpašumam tiešā veidā, nevis izmantojot tā vecākvārdvietu, tiks parādīta kļūda:

Piemērs.printFoo()
// kļūda TS2339: rekvizīts "printFoo" neeksistē tipam "typeof Example"

Lai gan ligzdošanas nosaukumvietas var palīdzēt sakārtot kodu, dziļi ligzdotas nosaukumvietas var radīt pretēju efektu. Dziļi ligzdotas nosaukumvietas apgrūtina koda lasīšanu un apkopi.

Vārdtelpas aizstājvārdi

Nosaukumvietas aizstājvārds ir saīsināts nosaukums, kas tiek piešķirts nosaukumvietas dalībniekam, kas atvieglo atsauci uz to.

Varat izveidot nosaukumvietas aizstājvārdu, izmantojot imports atslēgvārdu, kam seko nosaukums, kuru vēlaties piešķirt aizstājvārdam. Pēc tam piešķiriet imports atslēgvārdu un aizstājvārda nosaukumu nosaukumvietas dalībniekam.

Piemēram:

nosaukumvieta Automašīna {
eksportētnosaukumvieta Tesla {
eksportētklasē ModelX {
izveidot (): Stīga {
atgriezties"Izveidots X modelis".
}
}
}

eksportētnosaukumvieta Toyota {
eksportētklasē Camry {}
}

eksportētnosaukumvieta Ford {
eksportētklasē Mustangs {}
}
}

// aizstājvārda izveide
imports tesla = automašīna. Tesla

konst modelisX = jauns tesla. ModelX()
modelX.create() // Modelis X Izveidots

Šajā piemērā tiek izveidots aizstājvārds Automašīna. Tesla nosaukumvieta. Varat izmantot šo aizstājvārdu, lai piekļūtu rekvizītiem Tesla nosaukumvietas, piemēram, ModelX klases, vieglāk.

Nosaukumvietu izmantošana vairākos failos

Lai izmantotu nosaukumvietu citā failā, tā ir jāimportē. Nosaukumvietu importēšana atšķiras no mainīgo, funkciju, klašu utt. importēšanas. Atkarībā no jūsu projekta moduļu sistēma, varat tos importēt, izmantojot vai nu pieprasīt vai imports atslēgvārds.

Tomēr nosaukumvietas var importēt tikai, izmantojot trīskāršās slīpsvītras direktīvu, kas ir vienas rindiņas komentārs, kas satur XML tagu.

Piemēram:

// galvenais.ts

///
example.foo()

Šajā piemērā a iekšpusē tiek izmantota trīskāršā slīpsvītra direktīva galvenais.ts failu. Direktīva atsaucas uz indekss.ts failu, kas satur Piemērs nosaukumvieta. Bez importēšanas nosaukumvieta ir pieejama tikai tajā pašā failā, kurā tā ir definēta.

Pēc atsauces uz indekss.ts failu, varat piekļūt Piemērs nosaukumvieta un tās publiski pieejamie dalībnieki. Piemēram, varat piezvanīt uz foo metode uz Piemērs nosaukumvieta.

Kad esat izmantojis vairākus failus, jums būs jānodrošina, ka TypeScript apkopo un ielādē visu nepieciešamo kodu. To var izdarīt, savienojot izvadi no TypeScript kompilatora, izmantojot outFile opciju. Pēc tam visi ievades faili tiks apkopoti vienā JavaScript izvades failā. Vispārējā sintakse kompilatora palaišanai ir šāda:

tsc --outFile 

Aizvietot ar mērķa JavaScript faila nosaukumu. Aizvietot ar TypeScript faila nosaukumu, kas satur trīskāršās slīpsvītras direktīvu.

Piemēram:

tsc --outFile index.js main.ts

Šī komanda apkopos saturu galvenais.ts failu kopā ar visiem failiem, uz kuriem atsaucas trīskāršās slīpsvītras direktīvā, uz index.js failu.

Varat arī norādīt katru failu atsevišķi:

tsc --outFile 

Ir svarīgi atzīmēt, ka trīskāršās slīpsvītras direktīva ir spēkā tikai tad, ja tā ir deklarēta faila augšdaļā. Ja mēģināt to izmantot jebkur citur, TypeScript to uzskatīs par parastu vienas rindiņas komentāru bez īpašas nozīmes.

Vai jums vajadzētu izmantot nosaukumvietas vai moduļus?

Lai gan nosaukumvietas nav novecojušas, bieži ieteicams kārtot un pārvaldīt kodu, izmantojot ES6 moduļus. Moduļus ir vieglāk uzturēt un pārvaldīt, un tos var aptvert vairākos failos.

Turklāt faila līmenī varat norādīt attiecības starp moduļiem attiecībā uz importu un eksportu. Vārdtelpas nevar definēt to atkarības.

Galu galā izvēle starp nosaukumvietām un moduļiem būs atkarīga no jūsu projekta īpašajām vajadzībām un prasībām, jo ​​abi piedāvā vērtīgu veidu, kā organizēt un pārvaldīt kodu TypeScript.