5 начина за лаку конверзију

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

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

На пример, ЈаваСцрипт неће избацити грешку када референцирате елементе који не постоје у објекту или када помножите нулл са нумеричком вредношћу.

За ЈаваСцрипт, празан стринг(“”) је једнак 0(нула) када се ова два упореде помоћу оператора једнакости(==). Што је још горе, ЈаваСцрипт вам неће показати такве грешке у вашем коду у развоју. Видећете грешке тек када извршите свој програм.

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

Статичка провера значи откривање грешака у вашем коду без потребе за покретањем кода. Статичка провера типа је стога провера грешака током развоја на основу типа вредности којима се оперише у коду.

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

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

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

Конверзија типа у ТипеСцрипт-у и њен значај

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

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

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

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

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

Уобичајени случај конверзије типова је низ низова и бројева. Када претварате стрингове у бројеве у ТипеСцрипт-у, да бисте избегли грешке у вашем коду, претвара само нумеричке низове у бројеве. То јест, можете да конвертујете низове као што су „1”, „235”, „5234.5” и тако даље. Међутим, немојте претварати низове као што је „здраво“ у број

Хајде да погледамо различите начине претварања низова у бројеве у ТипеСцрипт-у:

Откуцајте тврдњу користећи „као“

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

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

/**
 * set the type of numString to be unkown, otherwise,
 * Typescript will infer numString to be a string value
 */
let numString: unknown = "23452";

// Type conversion using as - numString is converted to a number
// and assigned to the variable score
let score = numString as number;
console.log(score);
console.log(score * 35);

Излаз:

23452
820820

Из излаза приметите да је променљива нумСтринг конвертована у број и додељена оцењивању. Затим можемо да радимо нумеричка израчунавања као што је множење са резултатом јер је његова вредност број

Унесите тврдњу користећи <>

Тврдња типа помоћу <> такође се може користити за претварање стринга у број. Функционише исто као и коришћење кључне речи ас. Једина разлика у имплементацији је синтакса, која је приказана у наставку:

let numString: unknown = "23452";
// Type assertion using <> to convert a string to a number
let score = <number>numString;

console.log(score);
console.log(score * 35);

Излаз:

23452
820820

Излаз је исти као и коришћење кључне речи ас. Опет, запамтите да не користите потврду типа за претварање низова који немају нумеричке вредности у себи.

Коришћење конструктора бројева

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

let numString = "23452"; // type inferred to string
let lives: string = "20"; // type annotated to string

// pass in string to Number constructor to convert to number
let score = Number(numString)
console.log(score / 17)

// pass in string to Number constructor to convert to number
let remainingLives = Number(lives);
console.log(remainingLives - 4)

Излаз:

1379.5294117647059
16

Када користите конструктор броја, не морате да подесите тип стринга на непознат. Ради са вредностима низа које су означене или закључене у низу. Међутим, не заборавите да проследите нумеричке низове као што је „514“. Ако проследите низ који се не може конвертовати у број, биће враћен НаН (Није-број).

Коришћење оператора Унари плус (+).

Унарни плус (+) оператор, који претходи свом појединачном операнду, процењује се на операнд којем претходи. На пример, +2 се процењује на број 2, +542 на број 542, и тако даље. Међутим, ако операнд није број, унарни плус (+) оператор покушава да га конвертује у број.

На пример, +”98″, ће проценити на 98, а +”0″ ће дати број 0. Стога, можемо користити унарни плус (+) оператор да конвертујемо низове у бројеве. Ако проследите низ који се не може конвертовати у број, НаН се враћа као што је приказано у наставку:

let numString1 = "23452";
let numString2 = "973.82"
let word = "hello"

// Using the Unary plus (+) to convert strings to numbers
let num1 = +numString1;
let num2 = +numString2;
let notNumber = +word;

console.log(`${num1} is a ${typeof num1}`);
console.log(`${num2} is a ${typeof num2}`);
console.log(notNumber);

Излаз:

23452 is a number
973.82 is a number
NaN

Коришћење унарног плус (+) оператора је добар начин за претварање стрингова у бројеве јер је брз и не врши никакве додатне операције над својим операндима.

Коришћење парсеИнт() и парсеФлоат()

Баш као у ЈаваСцрипт-у, Типесцрипт не прави разлику између целих и децималних бројева познатих и као бројеви са покретним зарезом. Сви се сматрају бројем типа. Ипак, понашање парсеИнт() и парсеФлоат() се незнатно разликује.

парсеИнт() узима аргумент стринга, анализира га и враћа целобројни еквивалент према наведеном основу. парсеФлоат() узима стринг и анализира га враћајући број у покретном зарезу.

На пример, ако проследите „897“ и парсеИнт() и парсеФлоат(), добићете назад број 897. Међутим, ако проследите 897.75 и парсеИнт() и парсеФлоат(), парсеИнт() ће врати 897 док ће парсефлоат() вратити 897.75.

Стога, када конвертујете нумеричке стрингове који немају децимално место, користите парсеИнт(), међутим, ако нумерички низ има децимална места, користите парсеФлоат() као што је приказано у коду испод:

let numString1 = "897.75";
let numString2 = "724";
let word = "hello";

console.log("Parsing numerical strings with decimal numbers")
console.log(`Using parseInt -> ${parseInt(numString1)}`);
console.log(`Using parseFloat -> ${parseFloat(numString1)}`);

console.log("Parsing numerical strings with whole numbers")
console.log(`Using parseInt -> ${parseInt(numString2)}`);
console.log(`Using parseFloat -> ${parseFloat(numString2)}`);

console.log("Parsing strings that can't convert to number")
console.log(parseInt(word));
console.log(parseFloat(word));

Излаз:

Parsing numerical strings with decimal numbers
Using parseInt -> 897
Using parseFloat -> 897.75
Parsing numerical strings with whole numbers
Using parseInt -> 724
Using parseFloat -> 724
Parsing strings that can't convert to number
NaN
NaN

Закључак

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

Међутим, кад год конвертујете низове у бројеве, будите опрезни јер можете добити НаН када покушате да конвертујете стринг у број.

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

Такође можете истражити најбоље ТипеСцрипт библиотеке и време извођења да бисте знали као програмер.