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 ավելի ճկուն է։