TypeScript Academy · Lektion

Generiska interface och typalias

Använd generics med interface och anpassade typer

Lektion 2 av 413 steg

Generiska interface och typalias är en gratis lektion i TypeScript Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för TypeScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i TypeScript Academy innehåller totalt 4 lektioner.

Välkommen

Generics är inte begränsade till funktioner. Även gränssnitt och typalias accepterar typparametrar, vilket gör dem återanvändbara för många typer.

Syntax för generiska gränssnitt

Lägg till `` efter gränssnittets namn för att göra det generiskt. Använd T i egenskapstyper och metodsignaturer.
interface Box<T> {
  value: T;
  unwrap(): T;
}
const box: Box<number> = { value: 42, unwrap() { return this.value; } };

Generiskt typalias

Typalias använder samma syntax med ``.
type Maybe<T> = T | null | undefined;
type Pair<A, B> = { first: A; second: B };
const p: Pair<string, number> = { first: 'Alice', second: 30 };

Generiskt repository-gränssnitt

Ett klassiskt användningsfall är ett generiskt repository-gränssnitt som fungerar med alla entitetstyper.
interface Repository<T> {
  findById(id: number): T | null;
  findAll(): T[];
  save(item: T): void;
  delete(id: number): void;
}

Implementera ett generiskt gränssnitt

Ange typargumentet när du implementerar ett generiskt gränssnitt.
class UserRepo implements Repository<User> {
  findById(id: number): User | null { return null; }
  findAll(): User[] { return []; }
  save(user: User): void {}
  delete(id: number): void {}
}

Utöka generiska gränssnitt

Generiska gränssnitt kan utöka andra generiska gränssnitt.
interface Named<T> { name: T; }
interface NamedAndAged<T> extends Named<T> { age: number; }

Generisk svarstyp

En generisk API-svarstyp som omsluter valfri datanyttolast.
type ApiResponse<T> = {
  status: 'success' | 'error';
  data: T;
  timestamp: number;
};
const res: ApiResponse<User[]> = { status: 'success', data: [], timestamp: Date.now() };

Flera typparametrar i gränssnitt

Gränssnitt stöder flera typparametrar.
interface KeyValue<K, V> {
  key: K;
  value: V;
}
const kv: KeyValue<string, number> = { key: 'age', value: 30 };

Generisk metod i ett icke-generiskt gränssnitt

Ett gränssnitt kan ha generiska metoder utan att hela gränssnittet är generiskt.
interface Transformer {
  transform<T, U>(input: T, fn: (val: T) => U): U;
}

Rekursiva generiska typer

Generiska typer kan referera till sig själva för träd- eller länkade liststrukturer.
interface TreeNode<T> {
  value: T;
  children: TreeNode<T>[];
}

Typalias jämfört med gränssnitt för generics

Båda stöder generics lika väl. Föredra interface för kontrakt som implementeras av klasser. Föredra type för generics som involverar unioner, till exempel Maybe.

Snabbkontroll

Vad anger du när du implementerar `interface Repository`?

Sammanfattning

Generiska gränssnitt och typalias använder för att fungera med alla typer. De möjliggör återanvändbara kontrakt för repositoryn, svarsomslag och rekursiva datastrukturer. Implementera dem genom att ange det konkreta typargumentet.
Gratis att börja

Lär dig TypeScript med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
101
Lektioner
352

Vanliga frågor

Är lektionen ”Generiska interface och typalias” gratis?

Ja – hela texten till ”Generiska interface och typalias” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i TypeScript Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i TypeScript Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Generiska interface och typalias”?

Använd generics med interface och anpassade typer Ni övar på TypeScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig TypeScript Academy?

Du behöver inga förkunskaper. Utbildningen i TypeScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Generiska interface och typalias”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här TypeScript Academy-lektionen?

Ja. Varje TypeScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Generiska funktioner: typparametrar
  2. Generiska interface och typalias
  3. Generiska begränsningar med extends
  4. Standardvärden för typparametrar
← Tillbaka till TypeScript Academy