სასარგებლო ტიპები
ტაპსკრიპტში გვაქვს ბევრი დამხმარე ტიპი. ეს ტიპები აღწერილია ჯენერიკების გამოყენებით.
მაგალითისთვის გვაქვს შემდეგი კოდი:
interface Currency {
[key: string]: number;
}
const currency: Currency = {
gel: 1,
usd: 0.36,
eur: 0.34,
};ამ შემთხვევაში გვაქვს Currency-ის ინტერფეისი, რომელშიც მოთავსებული არის რიცხვითი ტიპის მნიშვნელობები.
იგივე ინტერფეისი შეგვეძლო უფრო მარტივად აგვეღწერა ტაიპსკრიპტის ჩაშენებული ტიპით, კერძოდ Record-ით.
type Currency = Record<string, number>;
const currency: Currency = {
gel: 1,
usd: 0.36,
eur: 0.34,
};Record
Record<Keys, Type> ტიპი შექმნის ობიექტს, სადაც აღწერილი იქნება Keys თვისებები Type ტიპით.
type CatName = 'miffy' | 'boris' | 'mordred';
interface CatInfo {
age: number;
breed: string;
}
const cats: Record<CatName, CatInfo> = {
miffy: { age: 10, breed: 'Persian' },
boris: { age: 5, breed: 'Maine Coon' },
mordred: { age: 16, breed: 'British Shorthair' },
};Partial
Partial<Type> ტიპი შექმნის ობიექტს, რომლის თვისებებიც იქნება არასავალდებულო (optional).
interface Todo {
title: string;
description: string;
}
// ❌ ცუდი მიდგომა
interface fieldsToUpdateBadWay {
title?: string;
description?: string;
}
// ✅ კარგი მიდგომა
type fieldsToUpdateBetterWay = Partial<Todo>;
function updateTodo(todo: Todo, fieldsToUpdate: fieldsToUpdateBetterWay): Todo {
return { ...todo, ...fieldsToUpdate };
}
const todo1 = {
title: 'organize desk',
description: 'clear clutter',
};
const todo2 = updateTodo(todo1, {
description: 'throw out trash',
});Required
Required<Type> ტიპი შექმნის ობიექტს, რომლის თვისებებიც იქნება სავალდებულო.
interface Props {
a?: number;
b?: string;
}
const obj: Props = { a: 5 };
const obj2: Required<Props> = { a: 5 }; // Property 'b' is missing in type '{ a: number; }' but required in type 'Required<Props>'.Readonly
Readonlyreadonly.
readonly თვისების მნიშვნელობის შეცვლა არ შეიძლება.
interface Todo {
title: string;
}
const todo: Readonly<Todo> = {
title: 'Delete inactive users',
};
todo.title = 'Hello'; // Cannot assign to 'title' because it is a read-only property.Pick
Pick<Type, Keys> ტიპი შექმნის ახალ ტიპს,
სადაც Keys მნიშვნელობები იქნება შერჩეული Type-დან.
type Email = `${string}@${string}.${string}`;
interface User {
name: string;
lastName: string;
email: Email;
password: string;
}
type UserCredentials = Pick<User, 'email' | 'password'>;
const user: UserCredentials = {
email: 'example@user.ge',
password: 'badpass123',
};Omit
Omit<Type, Keys> ტიპი შექმნის ახალ ტიპს,
სადაც Keys მნიშვნელობები იქნება მოშორებული Type-დან.
type Email = `${string}@${string}.${string}`;
interface User {
name: string;
lastName: string;
email: Email;
password: string;
}
type UserInfo = Omit<User, 'email' | 'password'>;
const user: UserInfo = {
name: 'john',
lastName: 'doe',
};შეჯამება
ამ სტატიაში განვიხილეთ ტაიპსკრიპტის დამხმარე ჯენერიკ ტიპები. ტაიპსკრიპტს კიდევ ბევრი სასარგებლო ტიპი გააჩნია, რომლებსაც შეგიძლიათ გაეცნოთ Typescript utility types სტატიაში.