Molemmat kuvaavat datan muotoa ja ovat usein vaihdettavia, mutta niillä on erilaiset ominaisuudet.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
Molemmat kuvaavat datan muotoa ja ovat usein vaihdettavia, mutta niillä on erilaiset ominaisuudet.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
typeinterfacetype 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 on yleinen alias mille tahansa tyypille — primitiivit, uniot, tuplet, mapped types. interface kuvaa vain objekti-/funktiomuotoja.
interface voi tehdä, mitä type ei voiinterface Box { width: number; }
interface Box { height: number; } // declaration merging — both merge into one
// Box now has width AND height
Interface:t tukevat declaration merging (useat deklaraatiot yhdistyvät) ja ovat idiomaattinen tapa laajentaa/parantaa, myös kolmannen osapuolen kirjastotyyppien parantaminen.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
Yleinen käytäntö: käytä interface objektin muodoille ja julkisille API:ille (paremmat virheilmoitukset, laajennettava, yhdistettävä) ja type kun tarvitset unioneja, tuplea tai muita tyyppioperaatioita. Valitse yksi oletukseksi johdonmukaisuuden vuoksi — monet tiimit käyttävät oletuksena interface objekteille ja turvautuvat type:hen vain silloin, kun sen lisätehoa tarvitaan.
Kirjasto IT-haastattelukysymyksiä yksityiskohtaisine vastauksineen — Juniorista Senioriin.
Lahjoita