بررسی Type Alias در تایپ اسکریپت

Type Alias یکی از ویژگی‌های قدرتمند تایپ اسکریپت است که به توسعه‌دهندگان اجازه می‌دهد تا نام‌های سفارشی برای تایپ‌هایی که دارند ایجاد کنند و خوانایی و قابلیت نگه‌داری کد خود را افزایش دهند. در این مقاله قصد داریم تا type alias در تایپ اسکریپت را با کمک چند مثال بررسی کنیم.

منظور از Type Alias در تایپ اسکریپت چیست؟

Type Alias در تایپ اسکریپت، یک رویکرد ساده برای تعریف نام‌های سفارشی برای تایپ‌های موجود ارائه می‌دهد، در نتیجه وضوح کد و قابلیت نگه‌داری آن را تقویت می‌کند. سینتکس آن به صورت زیر می‌باشد:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
type AliasName = TypeDefinition;
type AliasName = TypeDefinition;
type AliasName = TypeDefinition;

در این مثال،

AliasName
AliasName نام سفارشی اختصاص داده شده به تایپ را نشان می‌دهد، در حالی که
TypeDefinition
TypeDefinition ساختار تایپ مورد نظر را مشخص می‌کند. type aliasها بسیار منعطف هستند و انواع مختلفی از جمله primitiveها، تایپ‌های آبجکت، تایپ‌های union و function signatureها را در خود جای می‌دهند.

مثال‌های از مفهوم Type Alias در تایپ اسکریپت

نحوه استفاده از alias
User ID
User ID

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// Alias for User ID
type UserID = number;
// Usage
function getUserByID(id: UserID): User {
// Implementation to fetch user by ID
console.log("Fetching user with ID:", id);
return {} as User; // Dummy return for demonstration
}
// Test
const user = getUserByID(123);
console.log("Fetched user:", user);
// Alias for User ID type UserID = number; // Usage function getUserByID(id: UserID): User { // Implementation to fetch user by ID console.log("Fetching user with ID:", id); return {} as User; // Dummy return for demonstration } // Test const user = getUserByID(123); console.log("Fetched user:", user);
// Alias for User ID
type UserID = number;

// Usage
function getUserByID(id: UserID): User {
    // Implementation to fetch user by ID
    console.log("Fetching user with ID:", id);
    return {} as User; // Dummy return for demonstration
}

// Test
const user = getUserByID(123);
console.log("Fetched user:", user);

در این مثال،

UserID
UserID به عنوان type alias نشان دهنده شناسه‌های عددی برای کاربران است. با استفاده مستقیم از alias
UserID
UserID به جای
number
number ، کدی که داریم self-descriptiveتر می‌شود.

هنگام تعریف توابعی مانند

getUserByID
getUserByID، توسعه‌دهندگان بلافاصله متوجه می‌شوند که این تابع یک
ID
ID به عنوان آرگومان دریافت می‌کند، در نتیجه خوانایی کد افزایش پیدا می‌کند و هدف مورد نظر به طور موثر منتقل می‌شود.

نحوه استفاده از Alias
Post
Post

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// Alias for Post
type Post = {
title: string;
content: string;
author: Username;
};
// Usage
const newPost: Post = {
title: "Introduction to TypeScript Type Aliases",
content: "In this article, we explore TypeScript type aliases...",
author: "dev_guru_123",
};
// Test
console.log("New post:", newPost);
// Alias for Post type Post = { title: string; content: string; author: Username; }; // Usage const newPost: Post = { title: "Introduction to TypeScript Type Aliases", content: "In this article, we explore TypeScript type aliases...", author: "dev_guru_123", }; // Test console.log("New post:", newPost);
// Alias for Post
type Post = {
    title: string;
    content: string;
    author: Username;
};

// Usage
const newPost: Post = {
    title: "Introduction to TypeScript Type Aliases",
    content: "In this article, we explore TypeScript type aliases...",
    author: "dev_guru_123",
};

// Test
console.log("New post:", newPost);

در این مثال، type alias

Post
Post ساختار یک پست که شامل
title
title،
content
content و
author
author می‌شود را دربر می‌گیرد. با استفاده از alias
Post
Post، کد به طور شفاف ساختار یک آبجکت پست را به اشتراک می‌گذارد. پس از مواجهه با متغیرهایی مانند
newPost
newPost، توسعه‌دهندگان به طور مستقیم ویژگی‌های پیش‌بینی شده را مشاهده می‌کنند.

نحوه استفاده از Alias Math Operation

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// Alias for MathOperation
type MathOperation = (x: number, y: number) => number;
// Usage
const add: MathOperation = (x, y) => x + y;
const subtract: MathOperation = (x, y) => x - y;
// Test
console.log("Addition result:", add(5, 3));
console.log("Subtraction result:", subtract(8, 3));
// Alias for MathOperation type MathOperation = (x: number, y: number) => number; // Usage const add: MathOperation = (x, y) => x + y; const subtract: MathOperation = (x, y) => x - y; // Test console.log("Addition result:", add(5, 3)); console.log("Subtraction result:", subtract(8, 3));
// Alias for MathOperation
type MathOperation = (x: number, y: number) => number;

// Usage
const add: MathOperation = (x, y) => x + y;
const subtract: MathOperation = (x, y) => x - y;

// Test
console.log("Addition result:", add(5, 3));
console.log("Subtraction result:", subtract(8, 3));

در این قسمت، alias

MathOperation
MathOperation تابعی را نشان می‌دهد که دو عدد (
x
x و
y
y ) را به عنوان پارامترهای ورودی دریافت می‌کند و به عنوان خروجی، یک عدد را محاسبه می‌کند.

با استفاده از alias

MathOperation
MathOperation، کد به طور مشخص signature عملیات ریاضی مورد انتظار را به اشتراک می‌گذارد. هنگام تعریف توابعی مانند
add
add یا
subtract
subtract، توسعه‌دهندگان به سرعت انتظارات ورودی و خروجی را درک می‌کنند و در نتیجه تعریف تابع ساده‌تر می‌شود.

نحوه استفاده از Type Alias
Union
Union

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// Alias for Result
type Result = Success | Error;
// Define Success and Error types (for demonstration purposes)
class Success {
constructor(public data: any) {}
}
class Error {
constructor(public message: string) {}
}
// Usage
const successResult: Result = new Success("Data loaded successfully");
const errorResult: Result = new Error("Failed to load data");
// Test
function handleResult(result: Result) {
if (result instanceof Success) {
console.log("Success:", result.data);
} else {
console.error("Error:", result.message);
}
}
handleResult(successResult); // Output: Success: Data loaded successfully
handleResult(errorResult); // Output: Error: Failed to load data
// Alias for Result type Result = Success | Error; // Define Success and Error types (for demonstration purposes) class Success { constructor(public data: any) {} } class Error { constructor(public message: string) {} } // Usage const successResult: Result = new Success("Data loaded successfully"); const errorResult: Result = new Error("Failed to load data"); // Test function handleResult(result: Result) { if (result instanceof Success) { console.log("Success:", result.data); } else { console.error("Error:", result.message); } } handleResult(successResult); // Output: Success: Data loaded successfully handleResult(errorResult); // Output: Error: Failed to load data
// Alias for Result
type Result = Success | Error;

// Define Success and Error types (for demonstration purposes)
class Success {
    constructor(public data: any) {}
}

class Error {
    constructor(public message: string) {}
}

// Usage
const successResult: Result = new Success("Data loaded successfully");
const errorResult: Result = new Error("Failed to load data");

// Test
function handleResult(result: Result) {
    if (result instanceof Success) {
        console.log("Success:", result.data);
    } else {
        console.error("Error:", result.message);
    }
}

handleResult(successResult); // Output: Success: Data loaded successfully
handleResult(errorResult);   // Output: Error: Failed to load data

در این مثال، alias

Result
Result نشان دهنده یک تایپ union است که شامل
Success
Success و
Error
Error می‌باشد. تابع
handleResult
handleResult منتظر پارامتری از نوع
Result
Result است که ممکن است به صورت
Success
Success یا
Error
Error ظاهر شود. با استفاده از alias
Result
Result، کدی که داریم به طور مشخص نتایج بالقوه یک عملیات را مشخص می‌کند، درک کد را آسان‌تر کرده‌ همینطور قابلیت استفاده مجدد و نگه‌داری آن را هم تقویت می‌نماید.

نحوه Extend کردن Type Aliasها

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// Base Alias for User
type BaseUser = {
id: UserID;
username: string;
email: string;
};
// Extended Alias for Admin User
type AdminUser = BaseUser & {
role: "admin";
};
// Usage
const admin: AdminUser = {
id: 1,
username: "admin",
email: "admin@example.com",
role: "admin",
};
// Test
console.log("Admin user:", admin);
// Base Alias for User type BaseUser = { id: UserID; username: string; email: string; }; // Extended Alias for Admin User type AdminUser = BaseUser & { role: "admin"; }; // Usage const admin: AdminUser = { id: 1, username: "admin", email: "admin@example.com", role: "admin", }; // Test console.log("Admin user:", admin);
// Base Alias for User
type BaseUser = {
    id: UserID;
    username: string;
    email: string;
};

// Extended Alias for Admin User
type AdminUser = BaseUser & {
    role: "admin";
};

// Usage
const admin: AdminUser = {
    id: 1,
    username: "admin",
    email: "admin@example.com",
    role: "admin",
};

// Test
console.log("Admin user:", admin);

در این مثال، alias

BaseUser
BaseUser ویژگی‌های مشترک کاربر را دربر می‌گیرد. با extend کردن alias
BaseUser
BaseUser، یک تایپ
AdminUser
AdminUser ایجاد می‌کنیم و یک ویژگی دیگر به نام
role
role را به آن اختصاص می‌دهیم.  این کار، تعریف تعاریف تایپ‌های تخصصی را در عین حفظ ثبات و وضوح کد، امکان‌پذیر می‌کند.

جمع‌بندی

type alias در تایپ اسکریپت با ارائه نام‌های سفارشی برای تایپ‌های مختلف قابلیت خوانایی و نگه‌داری کد را بهبود می‌بخشد. type aliasها با روشن کردن هدف کد و ساده کردن ساختار آن، توسعه را آسان‌تر می‌کنند و کیفیت کلی نرم افزار را افزایش می‌دهند. توصیه می‌شود برای این که پایگاه‌های کد تمیزتر با قابلیت نگه‌داری بالاتر داشته باشیم از type aliasها استفاده کنیم.

دیدگاه‌ها:

افزودن دیدگاه جدید