ზოგადი ტიპები (Generics) საშუალებას გაძლევთ დაწეროთ განმეორებადი კოდი, რომელიც ტიპით პარამეტრიზირებულია — "ტიპის ცვლადი", რომელიც შეივსება კოდის გამოყენების დროს. ისინი გვაძლევს განმეორებადობას ტიპის უსაფრთხოების დაკარგვის გარეშე (ალტერნატივა, any, დაკარგავს მას).
// Without generics you'd choose between repetition or `any`:
function firstAny(arr: any[]): any { return arr[0]; } // loses the element type
// With a generic, the type flows through:
function first<T>(arr: T[]): T { return arr[0]; }
const n = first([1, 2, 3]); // T inferred as number → n: number
const s = first(["a", "b"]); // T inferred as string → s: string
T არის placeholder; TypeScript დასკვნას აკეთებს არგუმენტიდან, ამიტომ return ტიპი ზუსტია — first([1,2]) აბრუნებს number-ს, არა any-ს.
ზოგადი ტიპები და კლასები
interface ApiResponse<T> { data: T; status: number; }
const res: ApiResponse<User> = await getUser(); // res.data is User
class Box<T> {
constructor(private value: T) {}
get(): T { return this.value; }
}
const box = new Box(123); // Box<number>
მრავალი ტიპის პარამეტრი
function pair<K, V>(k: K, v: V): [K, V] { return [k, v]; }
pair("id", 42); // [string, number]
რატომ არის მნიშვნელოვანი
ზოგადი ტიპები ძლევენ ძალას თითქმის ყველა განმეორებადი აბსტრაქციას TypeScript-ში: Array<T>, Promise<T>, Map<K,V>, React-ის useState<T>, მონაცემების მიმოსახვევის ფუნქციებს და კოლექციებს.
ისინი საშუალებას აძლევენ ერთ განხორციელებას მუშაობდეს ბევრი ტიპისთვის, ხოლო ამ დროს შენახულია სრული ტიპის ინფორმაცია ბოლოდან ბოლომდე — უჩინარი რჩება შედარებული ხარისხი შედეგისა და შეყვანის ტიპებს შორის.
