Ty­pe­Script har ett antal viktiga funk­tio­ner som fun­da­men­talt för­bätt­rar ut­veck­ling­en av web­bap­pli­ka­tio­ner. Denna Ty­pe­Script-hand­led­ning ger dig en in­tro­duk­tion till pro­gram­me­rings­språ­ket och förklarar några av dess vik­ti­gas­te funk­tio­ner och an­vänd­nings­om­rå­den samt dess fördelar och nackdelar.

Vad är Ty­pe­Script?

Ty­pe­Script har ut­veck­lats av Microsoft och bygger på pro­gram­me­rings­språ­ket Ja­va­Script, som används flitigt inom web­b­ut­veck­ling. En funktion som utmärker Ty­pe­Script är statisk typning. Till skillnad från Ja­va­Script, som har dynamisk typning, kan du i Ty­pe­Script deklarera datatyper för variabler, funk­tio­ner och pa­ra­met­rar. Detta möjliggör tidig upptäckt av kod­nings­fel, vilket gör det möjligt att iden­ti­fi­e­ra fel redan innan koden har körts. Statisk typning för­bätt­rar inte bara kod­kva­li­te­ten avsevärt, utan också kodens läsbarhet.

Ty­pe­Script-syntaxen är nästan identisk med Ja­va­Script, vilket gör det mycket enklare att integrera den i be­fint­li­ga Ja­va­Script-projekt. Ty­pe­Script är faktiskt en superset av Ja­va­Script, vilket innebär att all korrekt Ja­va­Script-kod också är giltig Ty­pe­Script-kod. Detta gör att du gradvis kan migrera till Ty­pe­Script och dra nytta av för­de­lar­na med statisk typning och andra funk­tio­ner utan att behöva skriva om din be­fint­li­ga kodbas helt.

Här är ett enkelt Ja­va­Script-exempel:

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

I koden ovan är funk­tio­nen greet inte begränsad till en specifik datatyp för pa­ra­me­tern name. Detta innebär att funk­tio­nen fort­fa­ran­de fungerar, även om vi skickar ett tal som argument.

I Ty­pe­Script kan koden se ut så här:

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

Här har vi de­kla­re­rat pa­ra­me­tern name som en sträng. Om vi försöker använda funk­tio­nen med ett tal kommer Ty­pe­Script att visa ett fel­med­de­lan­de eftersom den överförda datatypen inte stämmer överens med den för­vän­ta­de datatypen.

Det här exemplet visar hur Ty­pe­Script hjälper till att upptäcka fel tidigt, vilket för­bätt­rar kodens kvalitet genom att förhindra felaktig an­vänd­ning av datatyper. Det är viktigt att notera att Ty­pe­Script slutligen kom­pi­le­ras till Ja­va­Script, vilket gör det möjligt att köra det i vilken Ja­va­Script-miljö som helst. Detta innebär dock att du endast får för­de­lar­na med typ­sä­ker­het under ut­veck­lings­fa­sen.

Vad används Ty­pe­Script till?

Ty­pe­Script är ett måste inom olika områden av mjuk­va­ru­ut­veck­ling, särskilt i si­tu­a­tio­ner där typ­sä­ker­het och kod­kva­li­tet är av avgörande betydelse.

Ett fram­trä­dan­de an­vänd­nings­om­rå­de för Ty­pe­Script är web­b­ut­veck­ling. Här sä­ker­stäl­ler Ty­pe­Script att Ja­va­Script-koden skrivs på ett sätt som gör den säkrare och enklare att un­der­hål­la. Detta är för­del­ak­tigt i om­fat­tan­de frontend-projekt med komplexa kodbaser. Ty­pe­Script kan dock också im­ple­men­te­ras på ser­ver­si­dan (backend) i Node.js-ap­pli­ka­tio­ner för att ge ett extra sä­ker­hets­skikt. I ser­ver­lö­sa ar­ki­tek­tu­rer som AWS Lambda och Azure Functions hjälper Ty­pe­Script till att minimera fel och sä­ker­stäl­la till­för­lit­lig ex­e­kve­ring.

Platt­form­so­be­ro­en­de ut­veck­ling är ännu ett område där Ty­pe­Script visar sina styrkor. Det kan optimera platt­form­so­be­ro­en­de ap­pli­ka­tio­ner och ut­veck­ling av mo­bi­lap­par avsevärt. Ramverk som Na­ti­ve­Script och React Native erbjuder stöd för Ty­pe­Script när det gäller pro­gram­me­ring av mo­bi­lap­par för olika platt­for­mar. Inom spel­ut­veck­ling används Ty­pe­Script i projekt som använder WebGL eller spel­mo­to­rer som Phaser eller Babylon.js. Ty­pe­Scripts typ­sä­ker­het bidrar till att förbättra spel­kva­li­te­ten och un­der­hålls­bar­he­ten.

Ty­pe­Script används också för data­vi­su­a­li­se­ring och ana­lys­pro­jekt. Bibliotek som D3.js stöder Ty­pe­Script och möjliggör skapandet av so­fisti­ke­ra­de in­stru­ment­pa­ne­ler och vi­su­a­li­se­ring­ar.

Hur man in­stal­le­rar Ty­pe­Script

Det är enkelt att in­stal­le­ra Ty­pe­Script och det tar bara några steg. Om du har Node.js på din dator kan du in­stal­le­ra Ty­pe­Script med npm (Node Package Manager).

Steg 1: Ladda ner Node.js

Kon­trol­le­ra om du har Node.js in­stal­le­rat på din dator. Om du ännu inte har in­stal­le­rat Node.js kan du ladda ner och in­stal­le­ra det från den of­fi­ci­el­la webb­plat­sen.

Steg 2: In­stal­le­ra Ty­pe­Script i ter­mi­na­len

Öppna kom­man­do­tol­ken (t.ex. Kom­man­do­tol­ken i Windows eller ter­mi­na­len i macOS eller Linux) och ange följande kommando för att in­stal­le­ra Ty­pe­Script globalt:

npm install -g typescript
bash

1

Steg 3: Kon­trol­le­ra den in­stal­le­ra­de versionen

Du kan testa om in­stal­la­tio­nen lyckades genom att köra följande kommando:

tsc -v
bash

Det här kommandot visar vilken version av Ty­pe­Script som är in­stal­le­rad. Om ett ver­sions­num­mer visas betyder det att in­stal­la­tio­nen lyckades.

Efter in­stal­la­tio­nen kan du generera Ja­va­Script-filer genom att skapa Ty­pe­Script-filer (med fi­län­del­sen .ts) och kompilera dem med Ty­pe­Script-kom­pi­la­torn tsc.

Steg 4: Skapa en Ty­pe­Script-fil

Skapa en Ty­pe­Script-fil, t.ex. app.ts, och infoga din Ty­pe­Script-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­pe­script

Steg 5: Kompilera filen

Kompilera Ty­pe­Script-filen genom att ange följande kommando:

tsc app.ts
bash

Detta kommer att kompilera app.ts till en Ja­va­Script-fil med namnet app.js. Du kan sedan köra Ja­va­Script-filen.

Vilka funk­tio­ner har Ty­pe­Script?

Web­b­ut­veck­ling­en har gjort stora framsteg under de senaste åren, och Ty­pe­Script har vuxit fram som ett extremt effektivt al­ter­na­tiv till Ja­va­Script. Nedan har vi sam­man­fat­tat de vik­ti­gas­te funk­tio­ner­na i detta språk.

Statisk typning

Statisk typning är en viktig funktion i Ty­pe­Script som låter dig ange datatyper för variabler, pa­ra­met­rar, funk­tio­ner och andra element i din kod. Till skillnad från dynamisk typning i Ja­va­Script, där datatyper bestäms under körningen, tilldelas datatyper i Ty­pe­Script under ut­veck­ling­en innan koden körs. Denna metod hjälper till att iden­ti­fi­e­ra fel och logiska problem i ett tidigt skede.

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

I det här exemplet använde vi statisk typning för funk­tio­nen add. De två pa­ra­met­rar­na a och b de­kla­re­ras som tal (number) och funk­tio­nen re­tur­ne­rar ett värde av typen number. Varje försök att använda denna funktion med en annan datatyp kommer att leda till att Ty­pe­Script iden­ti­fi­e­rar det som ett fel.

Valfri inmatning

Med valfri typning har du möjlighet att ange datatyper för vissa variabler och pa­ra­met­rar, medan andra lämnas utan de­fi­ni­e­rad datatyp.

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

Funk­tio­nen sayHello de­fi­nie­ras med pa­ra­met­rar­na name och age. Be­teck­ning­en any anger att pa­ra­me­tern age kan vara vilken datatyp som helst.

ES6+-funk­tio­ner

Ty­pe­Script stöder moderna Ja­va­Script-funk­tio­ner, inklusive ES6 och nyare funk­tio­ner såsom pil­funk­tio­ner och mall­sträng­ar.

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

Pil­funk­tio­ner­na leder till en kortare och mer koncis syntax.

Ko­d­or­ga­ni­sa­tion

Ty­pe­Script erbjuder bättre ko­d­or­ga­ni­sa­tion och sä­ker­stäl­ler att koden delas upp i åter­an­vänd­ba­ra delar. Detta möj­lig­görs tack vare moduler och nam­nut­rym­men.

// 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­pe­script

Här visar vi hur man struk­tu­re­rar kod med moduler och använder import och export för or­ga­ni­se­ring. Funk­tio­nen add de­fi­nie­ras i en separat modul med namnet Math.ts och im­por­te­ras sedan och in­te­gre­ras i en annan modul, Main.ts.

Ob­jek­t­o­ri­en­te­rad pro­gram­me­ring (OOP)

Ty­pe­Script un­der­lät­tar ob­jek­t­o­ri­en­te­rad pro­gram­me­ring genom Ty­pe­Script-klasser, gräns­snitt och arv:

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­pe­script

Detta exempel visar an­vänd­ning­en av klasser och ob­jek­t­o­ri­en­te­rad pro­gram­me­ring (OOP) i Ty­pe­Script. Klassen Person har egen­ska­per­na name, age och en metod greet, som används för att pre­sen­te­ra personen och ge in­for­ma­tion om hen.

Utökat typsystem

Ty­pe­Scripts typsystem är flexibelt och om­fat­tan­de. Du kan skapa an­vän­dar­de­fi­ni­e­ra­de typer och gräns­snitt och till och med utöka be­fint­li­ga typer.

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

Gräns­snit­tet Animal de­fi­ni­e­rar en egenskap name, medan gräns­snit­tet Dog ärver från Animal och lägger till en yt­ter­li­ga­re egenskap breed. Objektet myDog har egen­ska­per­na hos båda gräns­snit­ten.

Kom­pa­ti­bi­li­tet med Ja­va­Script

Ty­pe­Script är kom­pa­ti­belt med Ja­va­Script, vilket gör att det kan köras i alla Ja­va­Script-miljöer. Denna kom­pa­ti­bi­li­tet gör det enklare att suc­ces­sivt integrera Ty­pe­Script i be­fint­li­ga Ja­va­Script-projekt.

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

Ja­va­Script-koden ovan (utan ty­pi­fi­e­ring) kan användas i en Ty­pe­Script-kod (med ty­pi­fi­e­ring) utan problem.

Vilka är för­de­lar­na och nack­de­lar­na med Ty­pe­Script?

Ty­pe­Script erbjuder en rad fördelar, men har också vissa nackdelar. Här är en översikt:

Fördelar

Ty­pe­Script har ett om­fat­tan­de ekosystem av typ­de­fi­ni­tio­ner för många Ja­va­Script-bibliotek och ramverk. Detta gör det enkelt och smidigt att integrera tred­je­partskod i Ty­pe­Script-projekt. Detta är an­vänd­bart i dagens värld av web­ba­se­ra­de ap­pli­ka­tio­ner som ofta är beroende av flera bibliotek och ramverk.

Förutom statisk typning erbjuder Ty­pe­Script en mängd ut­veck­lings­funk­tio­ner, inklusive gräns­snitt, klasser, moduler och stöd för aktuella ECMA­Script-stan­dar­der. Dessa funk­tio­ner för­bätt­rar kodens struktur, un­der­lät­tar un­der­hål­let och skal­bar­he­ten i projekt och främjar pro­duk­ti­vi­te­ten i ut­veck­ling­en. Många in­te­gre­ra­de ut­veck­lings­mil­jö­er (IDE) som Visual Studio Code erbjuder utmärkt stöd för Ty­pe­Script.

Nackdelar

Det tar tid att vänja sig vid Ty­pe­Script, särskilt för ut­veck­la­re som bara har arbetat med Ja­va­Script innan de började använda det. Ty­pe­Script-kod måste kom­pi­le­ras i Ja­va­Script innan den kan köras i webb­lä­sa­re eller Node.js-miljöer. Detta skapar ett extra steg i ut­veck­lings­pro­ces­sen.

I mindre projekt kan Ty­pe­Script uppfattas som alltför kom­pli­ce­rat, eftersom för­de­lar­na med typ­sä­ker­het kanske inte är så uppenbara. Ty­pe­Script-projekt kan kräva mer resurser på grund av yt­ter­li­ga­re ty­pin­for­ma­tion och kom­pi­le­rings­steg.

Vilka är några al­ter­na­tiv till Ty­pe­Script?

Det finns olika webb­pro­gram­me­rings­språk som kan vara ett bra al­ter­na­tiv till Ty­pe­Script beroende på pro­jek­tets specifika krav och ut­veck­lar­nas pre­fe­ren­ser.

  • Flow: Flow är en statisk typ­kon­troll för Ja­va­Script som har ut­veck­lats av Facebook. Den gör det möjligt att lägga till typer i Ja­va­Script-kod utan att behöva byta helt till Ty­pe­Script. Flow är ett bra val om du vill integrera typning gradvis i dina Ja­va­Script-projekt.
  • Dart: Detta är ett pro­gram­me­rings­språk som ut­veck­lats av Google och som kan användas för att skapa web­bap­pli­ka­tio­ner och mo­bi­lap­par. Det erbjuder typ­sä­ker­het och god prestanda. Dart används ofta i kom­bi­na­tion med Flutter-ramverket för ut­veck­ling av mo­bi­lap­par.
  • Pu­re­Script: Pu­re­Script är ett starkt typat funk­tio­nellt pro­gram­me­rings­språk som in­klu­de­rar stark typ­sä­ker­het och en rent funk­tio­nell pro­gram­me­rings­stil. Det gör det möjligt att importera Ja­va­Script-bibliotek.
  • Elm: Elm är ett funk­tio­nellt, starkt typat språk som är utformat för ut­veck­ling av web­bap­pli­ka­tio­ner. Elm främjar principen om Elm Ar­chi­tectu­re och har en hög nivå av typ­sä­ker­het.
  • ReasonML (Buck­le­Script): detta språk ut­veck­la­des av Facebook och är baserat på OCaml. Buck­le­Script är en kom­pi­la­tor som kom­pi­le­rar ReasonML till Ja­va­Script. Det möjliggör också typ­sä­ker­het och är lätt att integrera med React för frontend-ut­veck­ling.
Tips

Vi fördjupar oss i andra ämnen såsom Ty­pe­Script-funk­tio­ner och Ty­pe­Script-matriser i andra artiklar i vår digitala guide.

Gå till huvudmeny