Middle
Millal kasutada tüüpe ja millal liideseid TypeScriptis?
sobes.tech AI
Vastus AI-lt
Tüübid (type) tuleks kasutada:
- Liitumised (unions) ja ristumised (intersections):
type Status = "pending" | "completed" | "failed"; type UserWithAddress = User & Address; - Primitiivsed tüübid ja literaalid:
type ID = string | number; type Direction = "up" | "down" | "left" | "right"; - Tupplid (tuples):
type RgbColor = [number, number, number]; - Olemasolevate tüüpide aliased loomine:
type StringOrNumber = string | number; - Tingimuslikud tüübid (conditional types):
type TypeOfProp<T, K extends keyof T> = T[K];
Liideseid (interface) tuleks kasutada:
- Objektide struktuuri kirjeldamiseks:
interface User { id: number; name: string; age?: number; // valikuline omadus } - Klasside rakendamiseks (implements):
interface Logger { log(message: string): void; } class ConsoleLogger implements Logger { log(message: string) { console.log(message); } } - Muude liideste laiendamiseks (extends):
interface Person { name: string; } interface Employee extends Person { employeeId: number; } - Deklaratiivne ühendamine (declaration merging): See võimaldab laiendada olemasolevat liidest, seda uuesti deklareerides. Tüüpide puhul see ei ole võimalik.
interface Box { width: number; } interface Box { // See lisab Box liidesele height omaduse height: number; }
Kokkuvõte:
| Omadus | type |
interface |
|---|---|---|
| Liitumised (unions) | Jah | Ei |
| Ristumised (intersections) | Jah | Ei |
| Primitiivsed tüübid/literaalid | Jah | Ei |
| Tupplid (tuples) | Jah | Ei |
| Aliased (aliased) | Jah | Ei |
| Tingimuslikud tüübid | Jah | Ei |
| Objekti kirjeldus | Jah | Jah |
| Klasside rakendamine | Ei | Jah |
| Laiendamine (extends) | Jah (& kasutamine) |
Jah (extends kasutamine) |
| Deklaratiivne ühendamine | Ei | Jah |
Üldiselt, objektide struktuuri kirjeldamiseks on parem kasutada interface, kuna see sobib paremini objektipõhisele lähenemisele ja toetab deklaratiivset ühendamist. Kõikide teiste puhul, eriti kombinatsioonide ja olemasolevatest tüüpide ühendamisel, on type paindlikum.