Middle
TypeScriptте кайда түрлөрдү, кайда интерфейс түзүү керек?
sobes.tech AI
AIден жооп
Типтер (type) колдонулушу керек:
- Бирикмелер (unions) жана кесилиштер (intersections):
type Status = "pending" | "completed" | "failed"; type UserWithAddress = User & Address; - Баштапкы типтер жана литерлер:
type ID = string | number; type Direction = "up" | "down" | "left" | "right"; - Туплдар (tuples):
type RgbColor = [number, number, number]; - Бардык белгилүү типтер үчүн алиас түзүү:
type StringOrNumber = string | number; - Шарттуу типтер (conditional types):
type TypeOfProp<T, K extends keyof T> = T[K];
Интерфейстер (interface) колдонулушу керек:
- Объекттердин түзүлүшүн сүрөттөө:
interface User { id: number; name: string; age?: number; // опционалдуу мүнөздөмө } - Класс аркылуу ишке ашыруу (implements):
interface Logger { log(message: string): void; } class ConsoleLogger implements Logger { log(message: string) { console.log(message); } } - Башка интерфейстерди кеңейтүү (extends):
interface Person { name: string; } interface Employee extends Person { employeeId: number; } - Декларативдик бириктирүү (declaration merging): Бул бар интерфейсти кеңейтүүгө мүмкүндүк берет, кайрадан аны жарыялоо менен. Типтер үчүн бул мүмкүн эмес.
interface Box { width: number; } interface Box { // Бул Box интерфейсине height кошот height: number; }
Кыскача салыштыруу:
| Өзгөчөлүк | type |
interface |
|---|---|---|
| Бирикмелер (unions) | Ооба | Жок |
| Кесилиштер (intersections) | Ооба | Жок |
| Баштапкы типтер/литерлер | Ооба | Жок |
| Туплдар (tuples) | Ооба | Жок |
| Алиас (aliases) | Ооба | Жок |
| Шарттуу типтер | Ооба | Жок |
| Объекттердин сүрөттөлүшү | Ооба | Ооба |
| Класс аркылуу ишке ашыруу | Жок | Ооба |
| Кеңейтүү (extends) | Ооба (& колдонуу менен) |
Ооба (extends колдонуу менен) |
| Декларативдик бириктирүү | Жок | Ооба |
Жалпысынан, объекттердин түзүлүшүн сүрөттөө үчүн interface колдонуу жакшы, анткени ал объект-ориенттелген жактан көбүрөөк ылайыктуу жана декларативдик бириктирүүнү колдойт. Калган бардык учурларда, өзгөчө комбинациялар жана бар типтерден жаңы типтер түзүүдө, type көбүрөөк ийкемдүү.