Oba popisují tvar dat a často jsou zaměnitelné, ale mají různé možnosti.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
Oba popisují tvar dat a často jsou zaměnitelné, ale mají různé možnosti.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
Knihovna IT otázek k pohovoru s podrobnými odpověďmi — od Junior po Senior.
Přispěttypeinterfacetype ID = string | number; // unions
type Pair = [number, number]; // tuples
type Name = User["name"]; // indexed/mapped/conditional types
type Nullable<T> = T | null; // wrap any type
type je obecný alias pro jakýkoli typ — primitiva, unie, řazené deice, mapované typy. interface pouze popisuje tvary objektů/funkcí.
interface umí, co type neumíinterface Box { width: number; }
interface Box { height: number; } // declaration merging — both merge into one
// Box now has width AND height
Rozhraní podporují declaration merging (více deklarací se kombinuje) a jsou idiomatickým způsobem, jak rozšířit/doplnit, včetně rozšíření typů knihoven třetích stran.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
Obvyklá konvence: použijte interface pro tvary objektů a veřejná API (lepší chybové zprávy, rozšiřitelné, sloučitelné) a type, když potřebujete unie, řazené deice nebo jiné typové operace. Pro konzistenci si zvolte jeden jako výchozí — mnoho týmů defaultuje na interface pro objekty a sáhne na type pouze když je jeho další síla potřebná.