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 |
|---|---|---|
| ერთიანობები (unions) | დიახ | არა |
| ინტერსექციები (intersections) | დიახ | არა |
| პრიმიტიული ტიპები/ლიტერალები | დიახ | არა |
| ტუპლები (tuples) | დიახ | არა |
| ალისები (aliases) | დიახ | არა |
| პირობები (conditional) | დიახ | არა |
| ობიექტების აღწერა | დიახ | დიახ |
| კლასებით განხორციელება | არა | დიახ |
| გაფართოება (extends) | დიახ (& გამოყენებით) |
დიახ (extends გამოყენებით) |
| დეკლარატიული შერწყმა | არა | დიახ |
საერთო ჯამში, ობიექტების სტრუქტურის აღწერისთვის უკეთესია გამოიყენოთ interface, რადგან ის უკეთესად ეწოდება ობიექტ-ორგანიზებულ მიდგომას და მხარს უჭერს დეკლარატიულ შერწყმას. დანარჩენისთვის, განსაკუთრებით კომბინაციების და არსებული ტიპებისგან ახალი ტიპების შექმნისთვის, type უფრო მოქნილია.