Ty­peSc­ript turi keletą pag­rin­di­nių funkcijų, kurios iš esmės pagerina ži­nia­tink­lio programų kūrimą. Šiame Ty­peSc­ript vadove pa­tei­kia­ma įvadas į prog­ra­ma­vi­mo kalbą ir pa­aiš­ki­na­mos kai kurios svar­biau­sios jos funkcijos bei naudojimo būdai, taip pat pri­va­lu­mai ir trūkumai.

Kas yra Ty­peSc­ript?

Ty­peSc­ript buvo sukurtas „Microsoft“ ir pagrįstas prog­ra­ma­vi­mo kalba Ja­vaSc­ript, kuri plačiai naudojama ži­nia­tink­lio kūrimui. Viena iš iš­skir­ti­nių Ty­peSc­ript savybių yra statinis ti­pi­za­vi­mas. Skir­tin­gai nuo Ja­vaSc­ript, kuri turi dinaminį ti­pi­za­vi­mą, Ty­peSc­ript leidžia dekla­ruo­ti duomenų tipus kin­ta­mie­siems, funk­ci­joms ir pa­ra­met­rams. Tai leidžia anksti aptikti kodavimo klaidas, todėl klaidas galima nustatyti dar prieš vykdant kodą. Statinis ti­pi­za­vi­mas ne tik žymiai pagerina kodo kokybę, bet ir padidina kodo skai­to­mu­mą.

Ty­peSc­ript sintaksė yra beveik identiška Ja­vaSc­ript sintaksei, todėl ją daug lengviau in­te­gruo­ti į esamus Ja­vaSc­ript projektus. Iš tiesų, Ty­peSc­ript yra Ja­vaSc­ript superset, o tai reiškia, kad bet koks teisingas Ja­vaSc­ript kodas yra taip pat ga­lio­jan­tis Ty­peSc­ript kodas. Tai leidžia jums pa­laips­niui pereiti prie Ty­peSc­ript ir pa­si­nau­do­ti statinio ti­pi­za­vi­mo bei kitų funkcijų pri­va­lu­mais, ne­rei­ka­lau­da­mi visiškai perrašyti esamos kodų bazės.

Čia pa­tei­kia­mas paprastas Ja­vaSc­ript pavyzdys:

function greet(name) {
    return "Hello, " + name;
}
console.log(greet(123)); // Output: "Hello, 123"
ja­vasc­ript

Pirmiau pa­teik­ta­me kode funkcija greet nėra apribota konkrečiu duomenų tipu pa­ra­met­rui name. Tai reiškia, kad funkcija vis tiek veiks, net jei kaip argumentą per­duo­si­me skaičių.

Ty­peSc­ript kalboje kodas gali atrodyti taip:

function greet(name: string): string {
    return "Hello, " + name;
}
console.log(greet(123)); // Error in TypeScript
ty­pesc­ript

Čia mes dekla­ra­vo­me parametrą name kaip eilutę. Jei bandysime naudoti funkciją su skaičiumi, Ty­peSc­ript parodys klaidą, nes perduotas duomenų tipas ne­ati­tin­ka laukiamo duomenų tipo.

Šis pavyzdys rodo, kaip „Ty­peSc­ript“ padeda anksti aptikti klaidas, pa­ge­rin­da­mas kodo kokybę ir užkertant kelią ne­tei­sin­gam duomenų tipų nau­do­ji­mui. Svarbu pažymėti, kad „Ty­peSc­ript“ ga­liau­siai kom­pi­liuo­ja­mas į „Ja­vaSc­ript“, todėl jį galima vykdyti bet kurioje „Ja­vaSc­ript“ aplinkoje. Tačiau tai reiškia, kad tipų saugumo pri­va­lu­mais galite naudotis tik kūrimo etape.

Kam nau­do­ja­mas Ty­peSc­ript?

Ty­peSc­ript yra būtinas įvairiose prog­ra­mi­nės įrangos kūrimo srityse, ypač tais atvejais, kai tipo saugumas ir kodo kokybė yra ypač svarbūs.

Vienas iš ži­no­miau­sių Ty­peSc­ript naudojimo pavyzdžių yra ži­nia­tink­lio kūrimas. Šiuo atveju Ty­peSc­ript užtikrina, kad Ja­vaSc­ript kodas būtų rašomas taip, kad būtų saugesnis ir lengviau pri­žiū­ri­mas. Tai naudinga di­de­liuo­se frontend pro­jek­tuo­se su su­dė­tin­go­mis kodų bazėmis. Tačiau Ty­peSc­ript taip pat gali būti įdiegtas serverio pusėje (backend) Node.js prog­ra­mo­se, kad už­tik­rin­tų papildomą saugumo lygį. Serverių ne­tu­rin­čio­se ar­chi­tek­tū­ro­se, tokiose kaip AWS Lambda ir Azure Functions, Ty­peSc­ript padeda sumažinti klaidų skaičių ir užtikrina patikimą vykdymą.

Kryžminė platforma yra dar viena sritis, kurioje Ty­peSc­ript de­monst­ruo­ja savo pri­va­lu­mus. Ji gali žymiai op­ti­mi­zuo­ti kryžminių platformų programas ir mobiliųjų programų kūrimą. Tokios plat­for­mos kaip Na­ti­veSc­ript ir React Native palaiko Ty­peSc­ript, kai reikia prog­ra­muo­ti mo­bi­lią­sias programas skir­tin­goms plat­for­moms. Žaidimų kūrimo srityje Ty­peSc­ript nau­do­ja­mas pro­jek­tuo­se, kuriuose nau­do­ja­mas WebGL arba žaidimų varikliai, tokie kaip Phaser arba Babylon.js. Ty­peSc­ript tipo saugumas padeda pagerinti žaidimų kokybę ir priežiūrą.

Ty­peSc­ript taip pat nau­do­ja­mas duomenų vi­zu­a­li­za­vi­mo ir analizės pro­jek­tuo­se. Tokios bi­b­lio­te­kos kaip D3.js palaiko Ty­peSc­ript ir leidžia kurti su­dė­tin­gas in­for­ma­ci­nes lenteles ir vi­zu­a­li­za­ci­jas.

Kaip įdiegti Ty­peSc­ript

Ty­peSc­ript įdiegimas yra paprastas ir užtrunka tik keletą žingsnių. Jei jūsų kom­piu­te­ry­je yra Node.js, galite įdiegti Ty­peSc­ript naudodami npm (Node Package Manager).

1 žingsnis: At­si­sių­s­ki­te Node.js

Pa­tik­rin­ki­te, ar jūsų kom­piu­te­ry­je įdiegta Node.js. Jei dar ne­įdie­gė­te Node.js, galite ją at­si­siųs­ti ir įdiegti iš ofi­cia­lios svetainės.

2 žingsnis: įdiekite „Ty­peSc­ript“ terminale

Ati­da­ry­ki­te komandų eilutę (pvz., „Command Prompt“ Windows sistemoje arba terminalą macOS arba Linux sistemoje) ir įveskite šią komandą, kad įdieg­tu­mė­te „Ty­peSc­ript“ visoje sistemoje:

npm install -g typescript
bash

-g (globalus) žymeklis įdiegia Ty­peSc­ript visoje jūsų sistemoje, kad ga­lė­tu­mė­te jį naudoti iš bet kur.

3 žingsnis: Pa­tik­rin­ki­te įdiegtą versiją

Galite pa­tik­rin­ti, ar įdiegimas buvo sėkmingas, vykdydami šią komandą:

tsc -v
bash

Ši komanda rodo, kokia Ty­peSc­ript versija yra įdiegta. Jei rodomas versijos numeris, tai reiškia, kad įdiegimas buvo sėkmingas.

Įdiegus programą, galite kurti Ja­vaSc­ript failus, sukuriant Ty­peSc­ript failus (su plėtiniu .ts) ir kom­pi­liuo­jant juos su Ty­peSc­ript kom­pi­lia­to­riu­mi tsc.

4 žingsnis: Sukurkite Ty­peSc­ript failą

Sukurkite Ty­peSc­ript failą, pvz., app.ts, ir įterpkite savo Ty­peSc­ript kodą.

type Person = { name: string, age: number };
const alice: Person = { name: "Alice", age: 30 };
console.log(`Hello, I am ${alice.name} and I am ${alice.age} years old.`);
ty­pesc­ript

5 žingsnis: Kom­pi­liuo­ki­te failą

Su­da­ry­ki­te Ty­peSc­ript failą įvedę šią komandą:

tsc app.ts
bash

Tai su­kom­pi­liuos app.ts į Ja­vaSc­ript failą su pa­va­di­ni­mu app.js. Tada galėsite vykdyti Ja­vaSc­ript failą.

Kokias funkcijas turi Ty­peSc­ript?

Pa­sta­rai­siais metais žymiai pažengė interneto svetainių kūrimas, o „Ty­peSc­ript“ tapo itin efektyvia „Ja­vaSc­ript“ al­ter­na­ty­va. Toliau api­bend­ri­no­me svar­biau­sias šio prog­ra­ma­vi­mo kalbos savybes.

Statinis ti­pi­za­vi­mas

Statinis ti­pi­za­vi­mas yra esminė Ty­peSc­ript funkcija, lei­džian­ti nurodyti kintamųjų, parametrų, funkcijų ir kitų elementų duomenų tipus kodo viduje. Skir­tin­gai nei dinaminis ti­pi­za­vi­mas Ja­vaSc­ript, kur duomenų tipai nustatomi vykdymo metu, Ty­peSc­ript duomenų tipai pri­ski­ria­mi kūrimo metu, prieš vykdant kodą. Šis metodas padeda anksti nustatyti klaidas ir logines problemas.

function add(a: number, b: number): number {
    return a + b;
}
const result = add(5, 3); // valid
const result = add(5, "3"); // Type Error
ty­pesc­ript

Šiame pavyzdyje naudojome statinį ti­pi­za­vi­mą funkcijai add. Du pa­ra­met­rai a ir b yra dekla­ruo­ja­mi kaip skaičiai (number), o funkcija grąžina number tipo vertę. Bet koks bandymas naudoti šią funkciją su kitokio tipo duo­me­ni­mis privers Ty­peSc­ript ją iden­ti­fi­kuo­ti kaip klaidą.

Pa­si­ren­ka­mas rašymas

Naudodami pa­si­rink­ti­nį ti­pi­za­vi­mą, galite nurodyti tam tikrų kintamųjų ir parametrų duomenų tipus, o kitiems palikti ne­nu­sta­ty­tą duomenų tipą.

function sayHello(name: string, age: any): string {
    if (age) {
        return `Hello, ${name}, you are ${age} years old.`;
    } else {
        return `Hello, ${name}.`;
    }
}
ty­pesc­ript

sayHello funkcija api­brė­žia­ma pa­ra­met­rais name ir age. Žymėjimas any rodo, kad age pa­ra­met­ras gali būti bet kokio duomenų tipo.

ES6+ funkcijos

Ty­peSc­ript palaiko modernias Ja­vaSc­ript funkcijas, įskaitant ES6 ir naujesnes funkcijas, pvz., rodyklių funkcijas ir šablonų eilutes.

const multiply = (a: number, b: number): number => a * b;
const greeting = (name: string) => `Hello, ${name}!`;
ty­pesc­ript

Rodyklės funkcijos leidžia naudoti trumpesnę ir glaudesnę sintaksę.

Kodų or­ga­ni­za­vi­mas

Ty­peSc­ript užtikrina geresnį kodo or­ga­ni­za­vi­mą ir ga­ran­tuo­ja, kad kodas bus su­skirs­ty­tas į pa­kar­to­ti­nai nau­do­ja­mas dalis. Tai įmanoma dėl modulių ir vardų erdvių.

// Math.ts
export function add(a: number, b: number): number {
    return a + b;
}
// Main.ts
import { add } from './Math';
const result = add(5, 3);
ty­pesc­ript

Čia pa­ro­dy­si­me, kaip struk­tū­ri­zuo­ti kodą naudojant modulius ir kaip or­ga­ni­zuo­ti import ir export. Funkcija „add“ api­brė­žia­ma atskirame modulyje, pa­va­din­ta­me Math.ts, o tada im­por­tuo­ja­ma ir in­te­gruo­ja­ma į kitą modulį, pavadintą Main.ts.

Ob­jek­ti­nis prog­ra­ma­vi­mas (OOP)

Ty­peSc­ript pa­leng­vi­na objektų ori­en­tuo­tą prog­ra­ma­vi­mą naudojant Ty­peSc­ript klases, sąsajas ir pa­vel­dė­ji­mą:

class Person {
    constructor(public name: string, public age: number) {}
    greet() {
        console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
    }
}
const person = new Person("Alice", 30);
person.greet();
ty­pesc­ript

Šis pavyzdys rodo klasių ir ob­jek­ti­nio prog­ra­ma­vi­mo (OOP) naudojimą Ty­peSc­ript. Klasė Person turi savybes name, age ir metodą greet, kuris nau­do­ja­mas asmeniui pri­sta­ty­ti ir pateikti in­for­ma­ci­ją apie jį.

Išplėsta tipų sistema

Ty­peSc­ript tipų sistema yra lanksti ir išsami. Galite kurti vartotojo api­brėž­tus tipus ir sąsajas, netgi išplėsti esamus tipus.

interface Animal {
    name: string;
}
 
interface Dog extends Animal {
    breed: string;
}
const myDog: Dog = { name: "Buddy", breed: "Labrador" };
ty­pesc­ript

Sąsaja Animal apibrėžia savybę name, o sąsaja Dog paveldi iš Animal ir prideda papildomą savybę breed. Objektas myDog turi abiejų sąsajų cha­rak­te­ris­ti­kas.

Su­de­ri­na­mu­mas su Ja­vaSc­ript

Ty­peSc­ript yra su­de­ri­na­mas su Ja­vaSc­ript, todėl jį galima vykdyti bet kurioje Ja­vaSc­ript aplinkoje. Šis su­de­ri­na­mu­mas pa­leng­vi­na Ty­peSc­ript in­te­g­ra­vi­mą į esamus Ja­vaSc­ript projektus.

// JavaScript-Code
function greet(name) {
    return "Hello, " + name;
}
// TypeScript-Code
function greet(name: string): string {
    return "Hello, " + name;
}
ty­pesc­ript

Pateiktas Ja­vaSc­ript kodas (be ti­pi­za­vi­mo) gali būti be jokių problemų nau­do­ja­mas Ty­peSc­ript kode (su ti­pi­za­vi­mu).

Kokie yra Ty­peSc­ript pri­va­lu­mai ir trūkumai?

Nors Ty­peSc­ript turi daug privalumų, jis taip pat turi keletą trūkumų. Štai jų apžvalga:

Pri­va­lu­mai

Ty­peSc­ript turi išsamią tipų api­brė­ži­mų eko­sis­te­mą, skirtą daugeliui Ja­vaSc­ript bi­b­lio­te­kų ir sistemų. Tai leidžia sklan­džiai ir paprastai in­te­gruo­ti trečiųjų šalių kodą į Ty­peSc­ript projektus. Tai yra naudinga šian­die­ni­nia­me in­ter­ne­ti­nių programų pasaulyje, kuris dažnai remiasi keliomis bi­b­lio­te­ko­mis ir sis­te­mo­mis.

Be statinio ti­pi­za­vi­mo, Ty­peSc­ript siūlo daugybę kūrimo funkcijų, įskaitant sąsajas, klases, modulius ir da­bar­ti­nių EC­MASc­ript standartų palaikymą. Šios funkcijos pagerina kodo struktūrą, pa­leng­vi­na projektų priežiūrą ir mastelį bei skatina pro­duk­ty­vu­mą kūrimo procese. Daugelis in­te­gruo­tų kūrimo aplinkų (IDE), pvz., Visual Studio Code, puikiai palaiko Ty­peSc­ript.

Trūkumai

Ty­peSc­ript rei­ka­lau­ja laiko priprasti, ypač tiems prog­ra­muo­to­jams, kurie prieš tai dirbo tik su Ja­vaSc­ript. Ty­peSc­ript kodas turi būti kom­pi­liuo­ja­mas Ja­vaSc­ript, prieš jį galima vykdyti nar­šyk­lė­se ar Node.js aplinkose. Tai sukuria papildomą žingsnį kūrimo procese.

Ma­žes­niuo­se pro­jek­tuo­se „Ty­peSc­ript“ gali būti laikomas pernelyg sudėtingu, nes tipo saugumo pri­va­lu­mai gali būti ne tokie aki­vaiz­dūs. „Ty­peSc­ript“ projektai gali rei­ka­lau­ti daugiau išteklių dėl pa­pil­do­mos tipo in­for­ma­ci­jos ir kom­pi­lia­vi­mo etapų.

Kokios yra Ty­peSc­ript al­ter­na­ty­vos?

Yra įvairių ži­nia­tink­lio prog­ra­ma­vi­mo kalbų, kurios gali būti gera al­ter­na­ty­va Ty­peSc­ript, pri­klau­so­mai nuo konkrečių projekto rei­ka­la­vi­mų ir kūrėjo (-ų) pa­gei­da­vi­mų.

  • Flow: Flow yra statinis Ja­vaSc­ript tipo tik­rin­tu­vas, sukurtas „Facebook“. Jis leidžia pridėti tipus prie Ja­vaSc­ript kodo be būtinybės visiškai pereiti prie Ty­peSc­ript. Flow yra geras pa­si­rin­ki­mas, jei norite pa­laips­niui in­te­gruo­ti tipavimą į savo Ja­vaSc­ript projektus.
  • Dart: tai „Google“ sukurta prog­ra­ma­vi­mo kalba, kuri gali būti naudojama kuriant ži­nia­tink­lio ir mo­bi­lią­sias programas. Ji užtikrina tipų saugumą ir gerą našumą. Dart dažnai naudojama kartu su Flutter mobiliųjų programų kūrimo platforma.
  • Pu­reSc­ript: Pu­reSc­ript yra griežtai tipizuota funkcinė prog­ra­ma­vi­mo kalba, kuri užtikrina stiprų tipų saugumą ir grynai funkcinį prog­ra­ma­vi­mo stilių. Ji leidžia im­por­tuo­ti Ja­vaSc­ript bi­b­lio­te­kas.
  • Elm: Elm yra funkcinė, griežtai tipizuota kalba, sukurta ži­nia­tink­lio programų kūrimui. Elm skatina Elm ar­chi­tek­tū­ros principą ir užtikrina aukštą tipo saugumą.
  • ReasonML (Buck­leSc­ript): ši kalba buvo sukurta „Facebook“ ir yra pagrįsta OCaml. Buck­leSc­ript yra kom­pi­lia­to­rius, kuris kom­pi­liuo­ja ReasonML į Ja­vaSc­ript. Ji taip pat užtikrina tipų saugumą ir yra lengvai in­te­gruo­ja­ma su React frontend kūrimo tikslais.
Tip

Kituose mūsų skait­me­ni­nio vadovo straips­niuo­se gilinamės į kitas temas, pvz., Ty­peSc­ript funkcijas ir Ty­peSc­ript masyvus.

22f89da06ee6c19a3c6f99d1b532befa

Go to Main Menu