Увод у TypeScript и конверзију типова
JavaScript је првобитно био осмишљен за кратке делове кода уграђене у веб странице. Мало ко је предвидео његов садашњи раст популарности и употребу у апликацијама са хиљадама линија кода.
Иако је JavaScript знатно напредовао и постао широко коришћен за изградњу апликација, он није без мана. Његови почеци и оригинална намена значе да поседује одређене карактеристике које могу отежати развој великих апликација.
На пример, JavaScript неће пријавити грешку ако се референцира елемент који не постоји у објекту или ако се нулл помножи са нумеричком вредношћу.
У JavaScript-у, празан стринг („“) се сматра једнаким 0 (нула) приликом поређења са оператором једнакости (==). Што је још горе, JavaScript не приказује ове грешке у току развоја, већ тек приликом извршавања програма.
TypeScript, надоградња на JavaScript, развијен је како би ублажио изазове у развоју апликација помоћу JavaScript-а. Он омогућава статичку проверу типова током писања кода.
Статичка провера подразумева проналажење грешака у коду без потребе за покретањем. Дакле, статичка провера типа је провера грешака током развоја, заснована на типовима вредности које се користе у коду.
TypeScript је типизован надскуп JavaScript-а. То значи да је сваки важећи JavaScript код такође важећи TypeScript код. Типизација подразумева да TypeScript додаје правила о коришћењу различитих типова података. TypeScript је снажно типизован, што значи да се не могу заобићи ограничења која намеће систем типова.
TypeScript је значајан помак у веб развоју. Омогућава писање читљивијег кода који се лакше одржава. Такође подстиче добре праксе кодирања и помаже програмерима да пронађу и избегну грешке током писања кода.
У поређењу са JavaScript-ом, TypeScript је поузданији и лакши за рефакторисање, што га чини идеалним за израду великих апликација. С обзиром на то да је TypeScript снажно типизован, размотримо конверзију типова, њен значај и како TypeScript њоме управља.
Конверзија типа у TypeScript-у и њен значај
Конверзија типа је поступак претварања вредности из једног типа података у други, на пример, претварање низа у број. Конверзија типа може бити имплицитна, где компајлер аутоматски претвара компатибилне типове података током компајлирања.
Конверзија типа може бити и експлицитна, где је конверзија типа захтевана у изворном коду. Ово се често назива и „type casting“.
Конверзија типа је важна јер омогућава програмерима да раде са различитим форматима података, придржавајући се очекиваних типова података у TypeScript-у. Такође осигурава предвидив исход из изворног кода.
Као програмер, експлицитном конверзијом типова обезбеђујете да ваш код испуњава захтеве TypeScript-a. То код чини читљивијим и разумљивијим, помажући у спречавању грешака везаних за тип.
Конверзије типова подржавају валидацију података и помажу TypeScript-у у развоју нудећи уграђене алате као што је аутоматско довршавање, који су повезани са одређеним типовима.
Уобичајен пример конверзије типова је рад са низовима и бројевима. Приликом претварања стрингова у бројеве, TypeScript ће конвертовати само нумеричке стрингове у бројеве, избегавајући грешке у коду. Можете претворити стрингове као што су „1“, „235“ и „5234.5“, али не и стрингове попут „здраво“.
Хајде да погледамо различите начине претварања стрингова у бројеве у TypeScript-у:
Тврдња типа користећи „as“
Када радите са различитим типовима података, понекад имате више информација о типу вредности него што TypeScript може знати. У тим ситуацијама, ви говорите TypeScript-у који тип променљива треба да има, уместо да дозволите компајлеру да закључи тип. Ово се назива тврдња типа.
Тврдња типа се врши помоћу кључне речи „as“. За претварање стринга у број, прво поставите тип стринга на непознат. Подразумевано, TypeScript сматра сваку конверзију стринга у број потенцијалном грешком, јер се стринг и број не преклапају довољно. Пример конверзије стринга у број користећи „as“:
/** * Постави тип numString на непознат, у супротном, * TypeScript ће закључити да је numString стринг. */ let numString: unknown = "23452"; // Конверзија типа коришћењем "as" - numString се претвара у број // и додељује променљивој score let score = numString as number; console.log(score); console.log(score * 35);
Излаз:
23452 820820
Из излаза видите да је променљива numString претворена у број и додељена променљивој score. Сада је могуће извршавати нумеричке прорачуне попут множења резултата јер је његова вредност број.
Тврдња типа користећи <>
Тврдња типа користећи <> се такође може користити за претварање стринга у број. Функционише идентично као и коришћење кључне речи „as“. Једина разлика је у синтаксти, као што је приказано испод:
let numString: unknown = "23452"; // Тврдња типа коришћењем <> за претварање стринга у број let score = <number>numString; console.log(score); console.log(score * 35);
Излаз:
23452 820820
Излаз је исти као и при употреби кључне речи „as“. Поново напомињемо да не треба користити тврдњу типа за претварање стрингова који не садрже нумеричке вредности.
Коришћење конструктора Number
Да бисте конвертовали стринг у број помоћу конструктора Number, проследите стринг који желите да конвертујете конструктору Number као што је приказано у коду испод:
let numString = "23452"; // Тип се закључује као стринг let lives: string = "20"; // Тип се специфицира као стринг // Проследите стринг конструктору Number за конверзију у број let score = Number(numString) console.log(score / 17) // Проследите стринг конструктору Number за конверзију у број let remainingLives = Number(lives); console.log(remainingLives - 4)
Излаз:
1379.5294117647059 16
Када користите конструктор Number, не морате подешавати тип стринга на непознат. Он ради са вредностима стринга које су специфициране или закључене као стринг. Важно је напоменути да се прослеђују нумерички стрингови, као што је „514“. Ако се проследи стринг који се не може претворити у број, вратиће се NaN (Not-a-Number).
Коришћење унарног оператора плус (+)
Унарни оператор плус (+), који претходи свом операнду, враћа операнд коме претходи. На пример, +2 ће вратити број 2, +542 ће вратити 542, итд. Међутим, ако операнд није број, унарни оператор плус (+) покушава да га конвертује у број.
На пример, +“98″ ће вратити 98, а +“0″ ће вратити 0. Дакле, можемо користити унарни оператор плус (+) за претварање стрингова у бројеве. Ако се проследи стринг који се не може претворити у број, враћа се NaN, као што је приказано у наставку:
let numString1 = "23452"; let numString2 = "973.82" let word = "hello" // Коришћење унарног плус (+) за претварање стрингова у бројеве let num1 = +numString1; let num2 = +numString2; let notNumber = +word; console.log(`${num1} је типа ${typeof num1}`); console.log(`${num2} је типа ${typeof num2}`); console.log(notNumber);
Излаз:
23452 је типа number 973.82 је типа number NaN
Употреба унарног оператора плус (+) је добар начин за конвертовање стрингова у бројеве, јер је брз и не врши додатне операције над својим операндима.
Коришћење parseInt() и parseFloat()
Као и у JavaScript-у, TypeScript не прави разлику између целих бројева и децималних бројева, односно бројева са покретним зарезом. Сви се третирају као број типа „number“. Ипак, понашање функција parseInt() и parseFloat() се незнатно разликује.
parseInt() прима стринг као аргумент, анализира га и враћа целобројни еквивалент према наведеној основи. parseFloat() прима стринг и анализира га враћајући број са покретним зарезом.
На пример, ако се проследи „897“ функцијама parseInt() и parseFloat(), добићете назад број 897. Међутим, ако се проследи 897.75, parseInt() ће вратити 897, док ће parseFloat() вратити 897.75.
Дакле, приликом конверзије нумеричких стрингова без децимала користите parseInt(), а ако нумерички стринг садржи децимале, користите parseFloat(), као што је приказано у коду испод:
let numString1 = "897.75"; let numString2 = "724"; let word = "hello"; console.log("Анализирање нумеричких стрингова са децималама"); console.log(`Коришћење parseInt -> ${parseInt(numString1)}`); console.log(`Коришћење parseFloat -> ${parseFloat(numString1)}`); console.log("Анализирање нумеричких стрингова са целим бројевима"); console.log(`Коришћење parseInt -> ${parseInt(numString2)}`); console.log(`Коришћење parseFloat -> ${parseFloat(numString2)}`); console.log("Анализирање стрингова који се не могу претворити у бројеве"); console.log(parseInt(word)); console.log(parseFloat(word));
Излаз:
Анализирање нумеричких стрингова са децималама Коришћење parseInt -> 897 Коришћење parseFloat -> 897.75 Анализирање нумеричких стрингова са целим бројевима Коришћење parseInt -> 724 Коришћење parseFloat -> 724 Анализирање стрингова који се не могу претворити у бројеве NaN NaN
Закључак
При раду са вредностима стринга, као што су резултати API позива, можда ће бити потребно конвертовати их у бројеве како би се извршила нумеричка израчунавања. У таквим случајевима, размотрите методе наведене у овом чланку за претварање стрингова у бројеве.
Међутим, будите опрезни при конверзији стрингова у бројеве, јер можете добити NaN када покушавате да конвертујете стринг у број.
Да бисте избегли такву грешку, уверите се да су сви стрингови које покушавате да конвертујете нумерички стрингови. Такође можете користити „if“ наредбу за проверу NaN, како бисте избегли грешке у коду.
Препоручује се да даље истражите најбоље TypeScript библиотеке и окружења за извршавање како бисте побољшали своје програмерске вештине.