Grunnleggende om TypeScript
Denne artikkelen forklarer det grunnleggende om TypeScript.
YouTube Video
Utføre "Hello World!"
Først skal vi kjøre det klassiske "Hello World!"-eksempelet i TypeScript ved hjelp av Visual Studio Code.
npm install -g typescript
Installer typescript
ved hjelp av npm
-kommandoen.
Opprett en tsconfig.json
-fil.
1{
2 "compilerOptions": {
3 "target": "ES6",
4 "module": "CommonJS",
5 "outDir": "out",
6 "sourceMap": true
7 }
8}
Opprett en .vscode/launch.json
-fil for å muliggjøre kjøring av main.ts
-filen i Visual Studio Code.
1{
2 "version": "0.2.0",
3 "configurations": [
4 {
5 "type": "node",
6 "request": "launch",
7 "name": "Launch Program",
8 "skipFiles": [
9 "<node_internals>/**"
10 ],
11 "program": "${workspaceFolder}/main.ts",
12 "preLaunchTask": "tsc: build - tsconfig.json",
13 "outFiles": [
14 "${workspaceFolder}/out/main.js"
15 ]
16 }
17 ]
18}
Opprett en main.ts
-fil som viser "Hello World!". Du kan kjøre den i Visual Studio Code ved å trykke på F5
-tasten.
1console.log("Hello World!");
Ved å konfigurere på denne måten, kan du kjøre TypeScript-filer i VSCode.
Oversikt over TypeScript
TypeScript (TS) er en overmengde av JavaScript utviklet av Microsoft. TypeScript støtter statisk typing, noe som gir mer robust og vedlikeholdbar kode.
Statisk Typing
- TypeScript legger til typer i JavaScript og utfører typekontroll ved kompilering. Dette gjør det mulig å forhindre typerelaterte feil på forhånd.
1let message: string = "Hello, TypeScript";
2console.log(message);
Kompilering
- Siden TypeScript ikke kan kjøres direkte i en nettleser, må det transpileres (kompileres) til JavaScript. Bruk
tsc
(TypeScript-kompilator) for å konvertere TS-filer til JS-filer.
Valgfrie Typeannotasjoner
- TypeScript utfører også typeinferens, men lar deg eksplisitt angi typer når det er nødvendig. Dette forbedrer lesbarheten og påliteligheten til koden.
1function greet(name: string): string {
2 return `Hello, ${name}`;
3}
4console.log(greet('John'));
Grensesnitt
- TypeScript tilbyr
interface
for å definere formen på objekter. Dette muliggjør streng administrasjon av objektstruktur.
1interface Person {
2 name: string;
3 age: number;
4}
5const user: Person = { name: "John", age: 30 };
6console.log(user.name);
Klasser
- TypeScript gir utvidelser til JavaScript sin klasse-syntaks og støtter arv, tilgangsmodifikatorer (
public
,private
,protected
) og abstrakte klasser.
1class Animal {
2 protected name: string;
3 constructor(name: string) {
4 this.name = name;
5 }
6 speak(): void {
7 console.log(`${this.name} makes a sound.`);
8 }
9}
10
11class Dog extends Animal {
12 speak(): void {
13 console.log(`${this.name} barks.`);
14 }
15}
16const animal = new Animal('Generic Animal');
17animal.speak();
18
19const dog = new Dog('Buddy');
20dog.speak();
Generiske typer
- I TypeScript kan du skrive gjenbrukbar og typesikker kode ved hjelp av generiske typer.
1function identity<T>(arg: T): T {
2 return arg;
3}
4console.log(identity<string>("Hello Generics"));
Økosystem
- TypeScript er fullt kompatibel med JavaScript-økosystemet og kan bruke eksisterende JavaScript-kode som den er. Videre er det integrert med populære biblioteker som React og Node.js.
Kraftige utviklerverktøy
- TypeScript tilbyr avanserte funksjoner som autoutfylling, refaktoreringsstøtte og feilsjekk i redaktører som VSCode.
TypeScript er spesielt nyttig for å forbedre påliteligheten og øke utviklerens produktivitet i store prosjekter.
Variabler i TypeScript
Dette forklarer de grunnleggende konseptene og bruken av variabler i TypeScript.
Deklarasjon av variabler
I TypeScript deklareres variabler ved hjelp av tre nøkkelord: let
, const
og var
. Hvert nøkkelord har ulike egenskaper.
Eksempel på let
:
let
har blokk-scope (gyldig bare innenfor krøllparenteser {}
). Verdier kan tildeles på nytt senere.
1let count: number = 10;
2console.log(count); // Outputs: 10
3
4count = 20;
5console.log(count); // Outputs: 20
Eksempel på const
:
const
kan ikke omtilordnes, så verdien som tildeles én gang kan ikke endres. Innholdet i objekter og matriser kan imidlertid endres.
1const pi: number = 3.14;
2console.log(pi); // Outputs: 3.14
3
4// pi = 3.14159; // Error: Reassignment is not allowed
5
6const fruits: string[] = ["apple", "banana"];
7fruits.push("orange");
8console.log(fruits); // Outputs: ["apple", "banana", "orange"]
Eksempel på var
:
var
har funksjons-scope og kan tildeles på nytt. Men ved å ignorere blokk-scope kan det føre til uventet oppførsel sammenlignet med let
eller const
.
1var message: string = "Hello, world!";
2console.log(message); // Outputs: Hello, world!
3
4message = "Hello, TypeScript!";
5console.log(message); // Outputs: Hello, TypeScript!
6
7// (`var` ignores block scope)
8if (true) {
9 var localMessage = "Hello again!";
10}
11console.log(localMessage); // "Hello again!"
Typeannotasjoner
I TypeScript kan du eksplisitt angi typer for variabler. Typeinferenz støttes også, men typeannotasjoner er nyttige i komplekse scenarier.
1let isDone: boolean = false;
2console.log(isDone); // Outputs: false
3
4let userName: string = "Alice";
5console.log(userName); // Outputs: Alice
Uinitialiserte Variabler
Hvis en variabel deklareres uten initialisering, blir undefined
tildelt som standard. En variabel deklarert med let
må eksplisitt tildeles undefined
eller inkludere undefined
i typen hvis ikke initialisert.
1let uninitialized: number | undefined;
2console.log(uninitialized); // Outputs: undefined
3
4uninitialized = 5;
5console.log(uninitialized); // Outputs: 5
Variabel Omfang
let
og const
har blokk-omfang, så de er kun gyldige innenfor samme blokk.
1if (true) {
2 let blockScoped: string = "Block Scoped";
3 console.log(blockScoped); // Outputs: Block Scoped
4}
5// console.log(blockScoped); // Error: blockScoped is out of scope
Variabel Hoisting
Siden TypeScript er en overbygging av JavaScript, arver den JavaScripts hoisting-funksjon. Hoisting refererer til oppførselen der variabel- og funksjonsdeklarasjoner blir behandlet som om de er løftet til toppen av sitt omfang. Men det er kun deklarasjonen som løftes, mens initialiseringen forblir på plass. Variabler deklarert med var
blir løftet, men bruk av let
eller const
før deklarasjon resulterer i en feil.
1console.log(a); // undefined
2var a = 10;
3console.log(a); // 10
- I dette tilfellet blir variabler deklarert med
var
løftet, og verdiene deres blir skrevet ut.
1console.log(b); // ReferenceError
2let b = 20;
- Variabler deklarert med
let
blir ikke løftet, noe som resulterer i en feil.
Sammendrag
Det følgende er en oppsummering av let
, const
og var
.
let
kan tildeles på nytt og har blokk-scope.const
kan ikke tildeles på nytt og har blokk-scope.var
kan tildeles på nytt og har funksjons-scope.- Alle av dem tillater eksplisitt typeanmerkning for å spesifisere variabeltyper.
Escape-tegnene i TypeScript
Escape-tegn brukes når bestemte tegn ikke kan skrives direkte eller for å representere tegn som har spesiell betydning i en streng. I TypeScript brukes escape-tegn for å representere kontrolltegn eller spesialtegn.
For eksempel kan du bruke \n
for å skrive ut en melding som inkluderer et linjeskift.
1const message: string = "Hello,\nWorld!";
2console.log(message);
3// Output:
4// Hello,
5// World!
Escapede spesialtegn
Escape-tegn er også nyttige når du skal inkludere spesialtegn i en streng. For eksempel kan du ønske å bruke dobbelt- eller enkeltanførselstegn direkte i en streng.
1const singleQuoteExample: string = 'It\'s a beautiful day!';
2console.log(singleQuoteExample);
3// Output: It's a beautiful day!
4
5const doubleQuoteExample: string = "He said, \"Welcome!\"";
6console.log(doubleQuoteExample);
7// Output: He said, "Welcome!"
Escaping selve tilbakeskråstreken
For å inkludere en tilbakeskråstrek i en streng må du skrive den som en dobbel tilbakeskråstrek.
1const path: string = "C:\\Program Files\\MyApp";
2console.log(path);
3// Output: C:\Program Files\MyApp
Unicode- og heksadesimale escape-tegn
I TypeScript kan Unicode-kodepunkter representeres med escape-sekvenser.
Unicode escape-sekvens
Du kan representere Unicode-tegn ved å spesifisere et firesifret heksadesimalt tall etter \u
.
1const smileyFace: string = "\u263A";
2console.log(smileyFace);
3// Output: ☺ (Copyright Mark)
Heksadesimal escape
Du kan representere spesifikke tegn ved å bruke et tosifret heksadesimalt tall etter \x
.
1const letterA: string = "\x41";
2console.log(letterA);
3// Output: A
Mal-litteraler og escape-tegn
Template literals defineres ved å omslutte dem med backticks og gir en enkel måte å lage innebygde uttrykk eller flerskrevne strenger på. Vanlige escape-tegn kan brukes direkte i mal-litteraler.
1const multiLine: string = `This is
2a multi-line
3string.`;
4console.log(multiLine);
5// Output:
6// This is
7// a multi-line
8// string.
Spesialtilfeller
I TypeScript kan bruk av ugyldige escape-sekvenser i en streng føre til en syntaksfeil. Derfor er det viktig å sjekke om escape-tegnene er gyldige.
1// Invalid escape sequence
2const invalidString: string = "\xZZ"; // Error
Praktiske brukseksempler
Her er et eksempel på hvordan du kan bygge en kompleks streng ved hjelp av escape-tegn.
1const jsonExample: string = "{\n\t\"name\": \"John Doe\",\n\t\"age\": 30\n}";
2console.log(jsonExample);
3// Output:
4// {
5// "name": "John Doe",
6// "age": 30
7// }
I dette eksemplet brukes \n
for et linjeskift og \t
for å legge til innrykk. Dette gjør JSON-strukturen enklere å lese.
Sammendrag
Escape-tegn er veldig viktige når du arbeider med strenger i TypeScript. Når du vil inkludere spesialtegn eller kontrolltegn i en streng, kan du lage uttrykksfulle strenger ved å bruke passende escape-sekvenser. Å forstå og bruke escape-tegn riktig kan forbedre lesbarheten og vedlikeholdbarheten i koden.
Versjoner av TypeScript
La oss få en oversikt over TypeScript-versjonene her.
-
TypeScript 1.0 (2014)
Den første stabile versjonen av TypeScript. Grunnleggende funksjoner som typing, klasser og moduler ble introdusert.
-
TypeScript 2.0 (2016)
Non-nullable Types
,Control Flow Analysis
,Read-only Properties
ogNever
-typen ble introdusert, noe som forbedret typeinferenz. -
TypeScript 3.0 (2018)
Et mer fleksibelt typesystem ble introdusert, med funksjoner som
Project References
, utvidelser avTuple Types
og forbedringer påRest Parameters
. -
TypeScript 4.0 (2020)
Funksjoner som
Variadic Tuple Types
, forbedringer av editoren, forbedret typeinferenz ogLabelled Tuple Elements
ble lagt til for å forbedre utviklingsopplevelsen. -
TypeScript 4.1 (2020)
Template Literal Types
ble introdusert, noe som gjorde strengtype-manipulasjon mer kraftig. -
TypeScript 4.3 (2021)
Tillegget av
Override
-nøkkelordet, forbedringer av tilgangsmodifikatorer i konstruktører, og forbedret typestøtte forWeakMap
ogWeakSet
. -
TypeScript 4.5 (2021)
Awaited
-typen,ModuleSuffixes
, og forbedret kompatibilitet med ECMAScript-moduler ble lagt til. -
TypeScript 5.0 (2023)
Standardisering av
Decorators
, forbedring av byggehastighet for prosjekter, forbedring av typesystemet, og støtte for de nyeste ECMAScript-funksjonene har blitt gjort.
TypeScript utvikler seg kontinuerlig, med flere versjoner som slippes hvert år og introduserer nye funksjoner og forbedringer.
Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.