Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

До колизије именовања долази када две или више компоненти кода користе исто име за променљиву, функцију или класу. Они су уобичајени у великим пројектима где многи људи раде на истој бази кода. Они могу отежати одређивање која компонента кода је одговорна за грешке.

Користећи просторе имена, можете организовати и управљати својим кодом тако да групе повезаних компоненти буду под заједничким идентификатором. Ово ће ублажити ризик од сукоба имена.

Креирање простора имена

Можете креирати просторе имена у ТипеСцрипт-у користећи именског простора кључна реч. Пратите га идентификатором да бисте именовали простор имена и блок затворен витичастим заградама. Синтакса је слична оној коју бисте користили направите класу у ЈаваСцрипт-у.

На пример:

именског простора Пример {}

Затим можете декларисати чланове именског простора—променљиве, функције и класе—унутар блока именског простора:

instagram viewer
именског простора Пример {
извозфункцијаФоо(): празнина{
конзола.Пријава(„Ово је функција унутар примера именског простора“);
}

извозкласа бар {
имовина: низ;

конструктор(имовина: низ) {
ово.проперти = власништво;
}
}

извозконст баз = „Ово је променљива именског простора“
}

У горњем примеру, Фоо, Бар, и баз су чланови Пример именског простора. Подразумевано, можете приступити само члановима именског простора унутар тог истог именског простора. Користити извоз кључну реч да би сваки члан именског простора био доступан изван њега.

Можете приступити свим јавно доступним члановима именског простора тако што ћете позвати име члана именског простора користећи тачку:

Пример.фоо(); // Ово је функција унутар примера именског простора

конст бар = Нова Пример. Бар ("низ");
конзола.лог (бар.проперти); // низ

конзола.лог (Пример.баз); // Ово је променљива простора имена

Угнеждени простори имена

ТипеСцрипт вам омогућава да угнездите просторе имена унутар других именских простора да бисте креирали хијерархијску структуру за ваш код. Угнежђивање именских простора може додатно да смањи ризике од судара имена груписањем повезаних именских простора под заједничким идентификатором.

На пример:

именског простора Пример {
извозконст својство_1 = "Фу";

извозименског простора бар {
извозконст принтФоо = функција () {
конзола.лог (проперти_1);
};
}

извозименског простора Баз {
извозкласа Фоо {
имовина: низ;

конструктор(имовина: низ) {
ово.проперти = власништво;
}
}
}
}

Блок кода изнад даје пример угнежђеног простора имена. Тхе Пример именски простор је именски простор највишег нивоа који садржи Бар именског простора и Баз именског простора.

Можете приступити својствима у угнежђеном простору имена користећи тачку која прати хијерархијску структуру коју сте креирали.

На пример:

конзола.лог (Пример.проперти_1); // Фоо
Пример. Бар.принтФоо() // Фоо
конст фоо = Нова Пример. Баз. Фоо("пример")

Овај пример кода приступа сваком члану именског простора преко надређеног именског простора. Директан приступ својству, уместо преко његовог надређеног именског простора, довео би до грешке:

Пример.принтФоо()
// грешка ТС2339: Својство 'принтФоо' не постоји на типу 'типеоф Екампле'

Иако угнежђени именски простори могу да вам помогну да организујете свој код, дубоко угнежђени простори имена могу произвести супротан ефекат. Дубоко угнежђени простори имена чине ваш код тежим за читање и одржавање.

Намеспаце Алиасес

Псеудоним именског простора је скраћено име које се даје члану именског простора, што олакшава референцирање.

Можете креирати алиас простора имена користећи увоз кључна реч праћена именом које желите да доделите алијасу. Затим доделите увоз кључну реч и псеудоним за члана именског простора.

На пример:

именског простора ауто {
извозименског простора Тесла {
извозкласа МоделКс {
Креирај(): Низ {
повратак`Модел Кс креиран`
}
}
}

извозименског простора Тоиота {
извозкласа Цамри {}
}

извозименског простора Форд {
извозкласа мустанг {}
}
}

// Креирање алијаса
увоз тесла = ауто. Тесла

конст моделКс = Нова тесла. МоделКс()
моделКс.цреате() // Модел Кс Креиран

Овај пример креира псеудоним за Ауто. Тесла именског простора. Можете користити овај псеудоним за приступ својствима Тесла именског простора, попут класе МоделКс, лакше.

Коришћење простора имена у више датотека

Да бисте користили простор имена у другој датотеци, морате да га увезете. Увоз именских простора се разликује од увоза променљивих, функција, класа итд. У зависности од вашег пројекта систем модула, можете их увести помоћу било које захтевају или увоз кључна реч.

Међутим, именске просторе можете да увезете само помоћу директиве троструке косе црте, која је коментар у једном реду који садржи КСМЛ ознаку.

На пример:

// маин.тс

///
Пример.фоо()

Овај пример користи директиву троструке косе црте унутар а маин.тс фајл. Директива се позива на индек.тс фајл, који садржи Пример именског простора. Без увоза, именски простор је доступан само унутар исте датотеке која га дефинише.

Након позивања на индек.тс датотеку, можете приступити Пример именског простора и његових јавно доступних чланова. На пример, можете позвати фоо метода на Пример именског простора.

Када користите више датотека, мораћете да обезбедите да ТипеСцрипт компајлира и учита сав потребан код. То можете учинити тако што ћете спојити излаз из ТипеСцрипт компајлера користећи оутФиле опција. Ово ће затим компајлирати све улазне датотеке у једну излазну датотеку ЈаваСцрипт. Општа синтакса за покретање компајлера је:

тсц --оутФиле 

Заменити са именом ваше циљне ЈаваСцрипт датотеке. Заменити са именом ТипеСцрипт датотеке која садржи директиву троструке косе црте.

На пример:

тсц --оутФиле индек.јс маин.тс

Ова команда ће компајлирати садржај маин.тс датотеку, заједно са свим датотекама на које упућује директива троструке косе црте, у индек.јс фајл.

Алтернативно, можете навести сваку датотеку појединачно:

тсц --оутФиле 

Важно је напоменути да је директива троструке косе црте важећа само када је декларисана на врху датотеке. Ако покушате да га користите било где другде, ТипеСцрипт ће га третирати као обичан коментар у једном реду без посебног значења.

Да ли треба да користите просторе имена или модуле?

Иако простори имена нису застарели, често се препоручује организовање и управљање кодом помоћу ЕС6 модула. Модуле је лакше одржавати и управљати њима и можете их обухватити више датотека.

Додатно, можете одредити односе између модула у смислу увоза и извоза на нивоу датотеке. Простори имена не могу дефинисати своје зависности.

На крају крајева, избор између простора имена и модула зависиће од специфичних потреба и захтева вашег пројекта, јер оба нуде вредан начин организовања и управљања кодом у ТипеСцрипт-у.