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 { // Ин хосият height-ро ба интерфейси Box илова мекунад height: number; }
Муштаракӣ:
| Хусусият | type |
interface |
|---|---|---|
| Ҷамъбандӣ (union) | Бале | Не |
| Муттаҳид (intersection) | Бале | Не |
| Типҳои ибтидоӣ/литерҳо | Бале | Не |
| Туплҳо | Бале | Не |
| Алиасҳо | Бале | Не |
| Шартӣ (conditional) | Бале | Не |
| Тавсифи объектҳо | Бале | Бале |
| Иҷро бо классҳо | Не | Бале |
| Тарафдории (extends) | Бале (& истифода мешавад) |
Бале (extends истифода мешавад) |
| Муштараксозӣ (merging) | Не | Бале |
Дар маҷмӯъ, барои тавсифи сохтори объектҳо, истифодаи interface беҳтар аст, зеро он ба муносибати объектӣ бештар мувофиқ аст ва дастгирии муштараксозиро дорад. Барои ҳама чизҳои дигар, махсусан барои омезишҳо ва эҷоди намудҳои нав аз намудҳои мавҷуда, type бештар флексибл аст.