TypeScript har etablert seg som en av de fem mest brukte programmeringsspråkene blant utviklere. En undersøkelse fra Stackoverflow i 2023 avslørte at hele 38,87 % av de spurte benytter seg av TypeScript.
TypeScript er kjent som et sterkt typet programmeringsspråk. Dette språket er i bunn og grunn en videreutvikling av JavaScript, som betyr at det arver alle funksjonene til JavaScript, men utvider dem med nye egenskaper som gjør det mulig å fange opp feil tidlig i utviklingsprosessen. TypeScript-kode blir deretter konvertert til JavaScript, som gjør at den kan kjøres i nettlesere eller i runtime-miljøer som Node.js.
Betydningen av TypeScript i JavaScript-utvikling
TypeScript er ikke absolutt nødvendig for å utvikle i JavaScript, men det kan vise seg å være svært verdifullt i flere situasjoner, som:
- Nye utviklere som lærer JavaScript, kan bruke TypeScript for å strukturere koden sin på en mer oversiktlig måte.
- Den sterke typesikkerheten gjør det enklere å vedlikeholde koden og avdekke feil i en tidlig fase.
- TypeScript er kompatibelt med JavaScript, noe som gjør det fleksibelt og lett å integrere.
TypeScript-biblioteker er samlinger av ferdigskrevet kode som kan brukes i prosjekter. Runtime-miljøer, på sin side, tillater at TypeScript-kode kjøres utenfor en nettleser.
Det finnes mange ulike biblioteker som er designet for å utføre forskjellige funksjoner. Noen fokuserer på skjemaer, andre på validering, og atter andre gir tilgang til eksterne tjenester som API-er. Her er noen av de mest nyttige TypeScript-bibliotekene og runtime-miljøene:
Zod
Zod er et bibliotek for skjemaerklæring og validering. Dette biblioteket forenkler utviklingen ved å fjerne behovet for gjentatte deklarasjoner, og det lar deg kombinere enkle datatyper til mer komplekse datastrukturer.
Egenskaper
- Ingen avhengigheter: Du trenger ikke å laste ned ekstra pakker for å ta i bruk Zod. Dette gjør biblioteket lett å installere og bruke.
- Lettvekt: Zod er komprimert til bare 8kb (minifisert + zippet). Dette gjør det til et godt valg for å utvikle raske applikasjoner.
- Fleksibelt: Zod kan brukes til å validere en rekke datatyper og støtter ulike valideringsmetoder.
- Fungerer med vanlig JavaScript: Zod er ikke bare for TypeScript, det kan også brukes med vanlig JavaScript.
Fastest Validator
Fastest Validator er et valideringsbibliotek for JavaScript og TypeScript som fungerer i moderne nettlesere og i runtime-miljøer som Deno og Node.js. Biblioteket er uten eksterne avhengigheter og kommer med over 20 innebygde validatorer.
Egenskaper
- Svært rask: Fastest Validator lever opp til navnet og kan utføre opptil 8 millioner valideringer i sekundet.
- Støtte for tilpassede validatorer: Du kan legge til din egen logikk i skjemaene dine ved hjelp av dette biblioteket.
- Støtter streng objektvalidering: Fastest Validator sikrer at et objekt kun inneholder de egenskapene som er definert i skjemaet.
- Tilpassbare feilmeldinger: Du kan endre feilmeldingene slik at de passer til din merkevare eller dine preferanser.
GoJS
GoJS er et nettrammeverk som gir utviklere muligheten til å lage interaktive diagrammer i TypeScript og JavaScript. Biblioteket kan brukes til å bygge flytskjemaer, designverktøy og organisasjonskart i et visuelt format.
Egenskaper
- Støtte for flere plattformer: GoJS kjører både i nettlesere og i runtime-miljøer som Node.js og Puppeteer.
- Automatiske oppsett: Biblioteket inneholder en rekke innebygde oppsett som du kan velge fra og tilpasse etter behov.
- Tilpassbare tillatelser og hendelser: Du kan definere egne varsler eller logikk som utløses når brukere utfører visse handlinger.
- Utvidbare verktøy: GoJS tilbyr en rekke verktøy som kan brukes for å øke brukervennligheten.
Type Fest
Type Fest er en samling av TypeScript-typer. Du kan kopiere og lime inn de typene du trenger direkte i prosjektet ditt, eller du kan legge dem til som en avhengighet.
Egenskaper
- Åpen kildekode: Samlingen er gratis og åpen kildekode. Du kan også bidra til samlingen ved å legge til nye typer.
- Stort utvalg av typer: Antallet typer i Type Fest vokser stadig. Noen grunnleggende typer inkluderer Primitive, Class, Constructor, AbstractClass, TypedArray og ObservableLike.
- Kryssplattform: Type Fest kan brukes i nettlesere og i runtime-miljøer som Node.js.
Jest
Jest er et testrammeverk for TypeScript- og JavaScript-prosjekter. Rammeverket er designet for å hjelpe deg med å skrive tester med et funksjonsrikt og tilgjengelig API som gir raske resultater.
Egenskaper
- Brukervennlig: Jest installeres som en Node.js-pakke. Etter installasjonen kan du lage en jest.config.js-fil og bruke testrammeverket.
- Raskt og pålitelig: Jest-rammeverket sørger for at testene dine har en unik global tilstand, som muliggjør parallell kjøring av tester.
- Godt API: Jest har et godt dokumentert API som gjør det enkelt å bruke rammeverket og teste prosjekter.
- Gode unntak: Når tester mislykkes i en TypeScript-kodebase, gir Jest en detaljert forklaring på hvorfor.
TypeDoc
TypeDoc er et bibliotek som kan brukes til å generere dokumentasjon for TypeScript-prosjekter. Biblioteket konverterer kommentarer i TypeScript-koden til en JSON-modell eller til gjengitt HTML-dokumentasjon. TypeDoc er tilgjengelig som en Node-modul og i en CLI-versjon.
Egenskaper
- Enkel i bruk: Du kan installere TypeDoc som en NPM-pakke, og den vil finne et inngangspunkt til prosjektet ditt via tsconfig.json-filen. Du kan også spesifisere flere inngangspunkter.
- God dokumentasjon: TypeDoc har detaljert dokumentasjon som hjelper deg i gang. Den inneholder også eksempler som du kan følge når du genererer dokumentasjon for TypeScript-prosjektet ditt.
- Fungerer med moderne rammeverk: Du kan bruke TypeDoc sammen med biblioteker som React, der TypeScript er basisspråket.
Bun
Bun er et raskt runtime-miljø for TypeScript og JavaScript. Dette miljøet er støttet på WSL, macOS og Linux. Det inneholder en innebygd bundler, en testrunner, en pakkebehandler og en transpiler.
Egenskaper
- Npm-kompatibel: Bun støtter alle npm-pakker gjennom sin innebygde pakkebehandler.
- Støtter Node.js API-er: Du kan bruke Bun med web-API-er som ReadableStream, WebSocket og Fetch.
- Skrevet i ZIG: Bun er utviklet i et lavnivå programmeringsspråk som heter ZIG. Dette språket er kjent for sin hastighet.
Deno
Deno er et runtime-miljø for TypeScript og JavaScript. Plattformen har utmerket støtte for TypeScript, noe som gjør at du slipper å bruke tid på konfigurering.
Egenskaper
- Komplett verktøykasse: Deno inkluderer verktøy som en kodeformater, en innebygd linter, en testrunner og IDE-integrasjon.
- Problemfri distribusjon: Deno gjør det mulig å gjennomføre distribusjoner med én enkel kommandolinje, uten behov for serverkonfigurasjon. Du kan også hoste dine TypeScript-prosjekter med de programmene du foretrekker.
- Basert på Chromes V8-motor: Du kan dra nytte av hastigheten som denne JavaScript-motoren tilbyr.
- Tillatelseskontroller: Du kan definere en tillatelsesliste i TypeScript-prosjektet ditt, som bestemmer hvilke filer, miljøvariabler og nettverksadresser som Deno har tilgang til.
Prettier
Prettier er en automatisk kodeformater for TypeScript og andre programmeringsspråk. Den er designet for å spare deg for tid ved å formatere koden din i det øyeblikket du lagrer den.
Egenskaper
- Lett å integrere med editorer: Du kan integrere Prettier med din kodeeditor slik at koden din formateres automatisk mens du skriver den. Den fungerer med Visual Studio Code, Vim, Emacs og Sublime Text.
- Tilgjengelig online: Du kan bruke nettversjonen til å teste eller lage raske prototyper.
- Kompatibel med ulike verktøy: Prettier kan brukes med JavaScript-baserte språk og biblioteker som TypeScript, Flow, JSON og JSX. Den støtter også stylingspråk som CSS, SCSS, Less og Styled-components.
Prisma
Prisma er en Object Relational Mapping (ORM) for TypeScript og Node.js. En ORM er et programvarelag som ligger mellom en database og en applikasjon. ORM tilbyr en metode for å koble objekter i applikasjonen til tabellene i databasen.
Egenskaper
- Omfattende: Prisma passer både for erfarne SQL-utviklere og nybegynnere. Autofullføringsfunksjonen gjør det enkelt å bruke denne ORM uten å måtte referere til dokumentasjonen hele tiden.
- Problemfrie migreringer: Du får automatisk migrering fra Prisma Migrate basert på Prisma-skjemaet ditt. Du har full kontroll over disse filene siden de kan tilpasses.
- Støtter samarbeid: Med Prisma kan du invitere teammedlemmer og definere tillatelser og kontrollnivåer.
- Visuell databasenettleser: Du kan utforske og visualisere tabellene dine med denne nettleseren. Den lar deg bla gjennom tabeller, se relasjoner, redigere data, paginere og filtrere.
Phaser
Phaser er et raskt og gratis 2D-spillrammeverk for å bygge HTML5-spill som kan spilles online, på mobilen og på datamaskiner. Dette brukervennlige rammeverket støtter WebGL- og Canvas-rendering.
Egenskaper
- Nine-Slice Game Object: Denne funksjonen gir deg mulighet til å vise et tekstur-basert objekt som kan strekkes horisontalt og vertikalt, samtidig som hjørnene beholder en fast størrelse.
- Støtte for WebGL og Canvas: Phaser kan bytte mellom WebGL- og Canvas-renderer avhengig av nettleserens støtte.
- Plugin-støtte: Phasers kjerne er begrenset til essensielle klasser, mens et system med plugins håndterer resten av funksjonene.
- Kamerastøtte: Biblioteket støtter multikamera. Du kan ha flere kameraer som kan skaleres for å passe enhver skjerm.
Tiny-invariant
Tiny-invariant er et bibliotek som støtter innsending av argumenter til en «invariant»-funksjon i en sprintf-stil. En «invariant» er en funksjon som tar en verdi; hvis verdien som sendes til funksjonen er «truthy», vil funksjonen ikke generere en feil. Men hvis verdien er «falsk», vil funksjonen generere en feil.
Egenskaper
- Støtter typeinnsnevring: Tiny-invariant er nyttig for å innsnevre typer korrekt i TypeScript og Flow.
- Lite: Dette biblioteket har ingen avhengigheter. Etter installasjon kan du begynne å bruke det umiddelbart.
- Støtter ulike formater: Tiny-invariant kan brukes med CommonJS, EcmaScript-modul og Universal Module Definition.
ESBuild
ESBuild er en rask bundler for TypeScript, JavaScript, JSX og CSS. Du kan installere denne bundleren på din lokale maskin eller prøve den direkte i nettleseren.
Egenskaper
- Ekstremt rask: ESBuild er utviklet i Go, et raskt og kompilert språk. De fleste andre bundlere er skrevet i JavaScript, som ikke er like raskt.
- Enkelt API: De mest brukte ESBuild API-ene er transform og build. Begge har omfattende dokumentasjon som er lett å følge.
- Støtter forskjellige innholdstyper: I tillegg til innebygd støtte for de nevnte språkene, støtter den også JSON, Text, Binary, Base64, Data URL, eksterne filer og tomme filer.
- Utvidbar med plugins: Du kan injisere kode i deler av byggeprosessen ved hjelp av plugin-API-et. Det finnes ulike plugins som er utviklet for forskjellige formål.
Fordeler ved å bidra til åpen kildekode TypeScript-biblioteker
De fleste av de TypeScript-bibliotekene og runtime-miljøene vi har diskutert ovenfor er åpen kildekode. For at et prosjekt skal regnes som åpen kildekode, må kildekoden være offentlig tilgjengelig under en åpen kildekode-lisens, som tillater bidrag fra andre.
Her er noen grunner til at du bør vurdere å bidra til åpen kildekode-prosjekter:
- Bygg din portefølje: En dyktig utvikler bør ha en samling prosjekter å vise frem under jobbintervjuer. Du kan bidra til åpen kildekode-prosjekter for å bygge en slik portefølje.
- Knytt kontakter med andre utviklere: Åpen kildekode-prosjekter gir deg muligheten til å bygge nettverk og kontakte utviklere over hele verden.
- Gi noe tilbake til fellesskapet: Hvis du har lært mye fra åpen kildekode-prosjekter, kan du gi noe tilbake ved å bidra.
- Få praktisk erfaring: Åpen kildekode-prosjekter lar deg få verdifull erfaring mens du jobber med virkelige prosjekter.
Konklusjon
Dersom du velger å bruke TypeScript i ditt neste prosjekt, har du nå en rekke biblioteker og runtime-miljøer å velge mellom. Valget av bibliotek vil avhenge av prosjektets art og dine egne preferanser.
Vi har også en artikkel om JavaScript kontra TypeScript som kan være interessant for deg.