Her ikisi de veri şeklini açıklayan ve çoğunlukla birbirinin yerine kullanılabilen yapılar olsa da, farklı yeteneklere sahiptir.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
Her ikisi de veri şeklini açıklayan ve çoğunlukla birbirinin yerine kullanılabilen yapılar olsa da, farklı yeteneklere sahiptir.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
type yapabilip interface yapamadığı şeytype 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, herhangi bir tür için genel bir alias'tır — primitives, unions, tuples, mapped types. interface yalnızca object/function şekillerini tanımlar.
interface yapabilip type yapamadığı şeyinterface Box { width: number; }
interface Box { height: number; } // declaration merging — both merge into one
// Box now has width AND height
Interfaces declaration merging'i destekler (multiple deklarasyonlar birleşir) ve genişletme/artırma için idiomatic yoldur; buna üçüncü taraf kütüphane türlerini artırmak da dahildir.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
Yaygın bir kural: object şekilleri ve public API'ler için interface kullanın (daha iyi hata mesajları, genişletilebilir, birleştirilebilir) ve unions, tuples veya diğer tür işlemleri gerektiğinde type kullanın. Tutarlılık için birini varsayılan olarak seçin — pek çok takım nesneler için interface'i varsayılan olarak kullanır ve yalnızca fazladan gücüne ihtiyaç duyulduğunda type'a başvurur.