royalsite logo

1 فروردین 1404

typescript tutorial banner

آموزش تایپ‌های تایپ‌اسکریپت به همراه کاربردهای عملی

تایپ‌اسکریپت (TypeScript) یک زبان برنامه‌نویسی توسعه‌یافته بر پایه‌ی جاوااسکریپت است که با اضافه کردن تایپ‌ها به جاوااسکریپت، نوشتن کدهای قابل فهم‌تر و قابل نگهداری‌تر را ممکن می‌سازد.

تایپ‌های تایپ‌اسکریپت دسته‌بندی‌های مختلفی دارند که در ادامه به آنها پرداخته ایم:

تایپ های اولیه (Primitive Types)

1. number

برای اعداد (صحیح و اعشاری)، مانند 12 یا 12.5

2. string

برای رشته‌های متنی (در داخل "کوتیشن")، مانند "Hello"

3. boolean

برای مقادیر منطقی true یا false

4. null

یک متغیر عمداً مقدار ندارد، این مقدار به صورت دستی توسط برنامه‌نویس اختصاص داده می‌شود

5. undefined

به معنای این است که یک متغیر تعریف شده ولی هنوز مقداری به آن اختصاص داده نشده است

تایپ‌های مجموعه‌ای (Collection Types)

1. array

آرایه یا یک لیست از مقادیر مشخص

برای ساختن آرایه‌ها در تایپ‌اسکریپت، می‌توانید از تایپ‌های اولیه استفاده کنید و با اضافه کردن یک جفت [] به آن‌ها، یک آرایه از همان نوع ایجاد کنید.

string[ ]: یا Array<string> هردو یک منظور را میرسانند آرایه ای از رشته های متنی ["a","b","c"]

2. tuple

آرایه‌ای با طول و ترتیب مشخص داشته باشید که هر عنصر آن می‌تواند نوع متفاوتی داشته باشد

برای ساختن تاپل‌ها در تایپ‌اسکریپت، می‌توانید از تایپ‌های اولیه در [] یک تاپل ایجاد کنید.

[string,number,boolean,null] یک تاپل چهارعنصره می‌سازد که مقادیر ["Hello",24,true,null] را درخود جای می‌دهد.

تایپ‌های خاص (Special Types)

1. any

متغییر هایی که به آنها تایپ any داده می‌شود میتوانند هر مقداری در خود ذخیره کنند(با احتیاط استفاده شود).

2. unknow

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

3. void

برای توابعی که هیچ مقداری بر نمیگردانند (یک عملیات را انجام می‌دهد ولی چیزی return نمی‌کنند).

4. never

برای موارد غیرممکن مثل تابعی که خطا پرتاب می‌کند (throw new Error).

5. object

فقط می‌گوید مقدار یک نوع شیء است، اما نمی‌گوید ساختار آن چیست بهتر است از interface یا type برای تعریف ساختار اشیاء استفاده کنید که در ادامه بررسی میکنیم.

تایپ‌های ترکیبی (Union و Intersection)

1. Union Type

با عملگر or تایپ هارو باهم ترکیب می‌کند

let name = string | null

یکی از ترکیب تایپ‌های پر استفاده در تایپ‌اسکریپت است برای زمانی که مشخص نیست مقدار name را دراختیار داریم یا خیر.

2. Intersection Type

با عملگر and تایپ هارو باهم ترکیب می‌کند

let person: {name: string} & {age: number}

این مدل ترکیب به ندرت استفاده می‌شود نشان می‌دهد آبجکت person هم باید name و هم age داشته باشد.

تایپ‌های سفارشی

در تایپ‌اسکریپت، هم interface و هم type برای تعریف تایپ‌های سفارشی استفاده می‌شوند، اما تفاوت‌هایی در ویژگی‌ها و کاربردهای آن‌ها وجود دارد.

کدام را انتخاب کنیم؟

  • اگر نیاز به ساختاردهی اشیاء و گسترش تدریجی دارید، از interface استفاده کنید
  • اگر نیاز به Union Types یا ساختارهای پیچیده‌تر دارید، از type استفاده کنید

interface Person {name:string,age:number}

type Person = {name:string,age:number}

تایپ‌ Enumerations (enum)

enum برای مدیریت مجموعه‌ای از مقادیر ثابت و معنادار عالی است، به خصوص زمانی که مقادیر باید تکرار شوند یا در چند جای مختلف برنامه استفاده شوند.

enum Status {
	Success = "SUCCESS",
	Failure = "FAILURE",
	Pending = "PENDING",
};
const currentStatus: Status = Status.Success;
currentStatus --> "SUCCESS"

گاهی به جای enum می‌توان از تایپ‌های یکتا یا شیءهای ثابت استفاده کرد. اما enum قابلیت‌های بیشتری مانند دسترسی دوطرفه و خوانایی بهتر در موقعیت‌های خاص ارائه می‌دهد.

تایپ‌های DOM

تایپ‌های DOM (Document Object Model) در تایپ‌اسکریپت به شما کمک می‌کنند تا هنگام کار با عناصر HTML، رفتارها و ویژگی‌های آن‌ها را به صورت دقیق‌تر مدیریت کنید.

تایپ های عناصر HTML

یادگیری تایپ‌های HTML بسیار ساده است. کافی است نام تگ را بدانیم و آن را به این صورت بنویسیم: ابتدا کلمه HTML و در انتها Element.

مانند : HTMLDivElement,HTMLSpanElement, ...

تایپ‌های مرتبط با رویدادها (Events)

تایپ های Event ها در متدهای Event Handlers ویژگی‌های داخلی عناصر HTML هستند که به شما امکان می‌دهند یک تابع را به یک رویداد خاص متصل کنید.

  1. Event: برای رویدادهای عمومی.
  2. MouseEvent: برای رویدادهایی که معمولا موس باعث اجرا شدن آنها می‌شود مانند click, mousemove.
  3. KeyboardEvent: برای رویدادهایی که معمولا صفحه کلید باعث اجرا شدن آنها می‌شود مانند keypress, keydown.
  4. FocusEvent: برای رویدادهای focus, blur.
  5. InputEvent: برای تغییرات در فیلدهای ورودی مانند input.

این های تایپ‌های پر استفاده DOM هستند تایپ های دیگری هم مانند Document,Window,Location,... وجود دارند ولی استفاده از آنها بسیار نادر است.

تمرین : ارسال اطلاعات با کلیک

ارسال درخواست HTTP بعد از کلیک شدن دکمه و سپس دریافت پاسخ سرور.

const usernameInput = document.getElementById("username") as HTMLInputElement | null;
const PasswordInput = document.getElementById("password") as HTMLInputElement | null;
const submitButton = document.getElementById("submit-button") as HTMLButtonElement | null;
interface UserType {
username:string
password:string
}
interface ResponseTypes{
access_token:string|undefined,
refresh_token:string|undefined,
}
const sendData = async () :Promise<void> =>{
const userObject:UserType = {
username: usernameInput?.value || "NotExists",
password: PasswordInput?.value || "NotExists",
}
const resposne:Response = await fetch("BACKEND_DOMAIN",{
method:"POST",
headers:{"Content-Type":"application/json"},
body:JSON.stringify(userObject)
})
if (resposne.ok){
const result:ResponseTypes = await resposne.json();
// انجام عملیات احراز هویت
}
}
if (submitButton !== null){
submitButton.addEventListener("click",sendData)
}

اگر مطمئن هستید که عنصر دریافتی حتما وجود دارد میتوانید از null رو حذف کنید.

royalsite admin

نوشته شده توسط متین قاسمی مدیر آکادمی رویال سایت

Senior Frontend Developer

Senior Backend Developer

SEO Webmaster

Data Analyst

با بیش از سه سال تجربه طراحی سایت

instagram icon
telegram icon
sorush messenger icon
igap messenger icon
Linkedin platform