Mörkt tema
Interface
💡 Introduktion till ämnet (flipped classroom)
⏰ Tidsåtgång: c.a. 6 min
- 📖 Learning TypeScript av Josh Goldberg: Interface
- Types vs. interface
❓ Våga Fråga
🔈 Transkription
🔈 Video 8 - Interface
I video 5 pratade vi om "types". Det finns även ett annat koncept i TypeScript som är nästan identiskt, som heter interface. Denna term förekommer också i många andra programmeringsspråk och är kanske därför vanligare att använda även i JavaScript/TypeScript.
Ett interface är som en mall för hur någonting ska fungera eller vilka egenskaper det har.
ts
type HighscoreItem = {
name: string;
score: number;
}
interface IHighscoreItem {
name: string;
score: number;
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Som synes är syntaxen nästan identisk. Det är konvention att deklarera interface med stort I i början på namnet: IHighscoreItem, för att därigenom ge en ledtråd om att det är ett interface.
Det som skiljer type och interface åt är följande:
- Interface kan "merge:a" med andra interface.
- Interface kan användas för att kolla att klasser är korrekt deklarerade. Vi pratar om klasser i en annan modul.
- Interface är snabbare än types (de cachas internt av TypeScript).
- Interface tenderar att generera bättre felmeddelanden.
- Vi kan deklarera en egenskap som "readonly", dvs. att vi inte får skriva ett värde till den.
ts
interface IHighscoreItem {
name: string;
score: number;
readonly date?: Date;
deleteScore(): void;
}1
2
3
4
5
6
2
3
4
5
6
Nu börjar vi närma oss kanten för TypeScript-träsket, och avrundar här. All fördjupning härifrån är på eget bevåg.