برنامه نویسی

تایپ اسکریپت نوع اسمی: راه درست

در صورتی که نمی دانید تایپ اسمی چیست

تایپ اسکریپت یک زبان تایپ ساختاری است، اما می توان رفتار زبان تایپ اسمی را بسیار نزدیک تقلید کرد.

ما با ساده ترین روش شروع می کنیم:

type AB = { a:number, b:number, x:never}
type BA = { a:number, b:number, y:never}

const ab:AB = {a:1, b:2}
const ba:BA = ab // error !!
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

زمین بازی

کار می کند

اما این به اندازه کافی خوب نیست!!

امروز می خواهیم یاد بگیریم که چگونه یک نوع اسمی مناسب در Typescript ایجاد کنیم

اما ابتدا اجازه دهید بررسی کنیم که چرا روش اول به اندازه کافی خوب نیست.

ابتدا از نوع ادعا استفاده می کند. در صورت امکان از اظهار تایپ خودداری کنید، شخصاً فقط زمانی که در حال ایجاد لفاف‌ها هستم تایپ می‌کنم.

دوم، کاربران می توانند به ویژگی اضافی دسترسی داشته باشند: نام تجاری از طریق تایپ استاتیک در این مورد، نام تجاری ما است ab.x و ba.y.

ما به عنوان یک صنعتگر نمی خواهیم این اتفاق بیفتد

راه حل

declare class AB_Class { 
    protected x?:never
}

declare class BA_Class { 
    protected x?:never
}

interface AB extends AB_Class{
    a:number, b:number
}

interface BA extends BA_Class{
    a:number, b:number
}

const ab:AB = {a:1, b:2} 
const ba:BA = ab // error !!
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

زمین بازی

نکته کلیدی این است که از کلاس استفاده کنید و اعلام کنید مارک های حفاظت شده اختیاری با نوع هرگز.

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

  1. بدون ادعای نوع
  2. کاربران نمی توانند به برند دسترسی داشته باشند

حالا ممکن است بپرسید چرا protected، چرا که نه private?

این به این دلیل است که این مثال را در نظر بگیرید

declare class AB_Class { 
    private x?:never
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد از tsc تالیف، خروجی است

declare class AB_Class { 
    private x?
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

آیا متوجه تفاوت می شوید؟

تایپ اسکریپت نوع را حذف می کند private و در ادعای نوع ناموفق است

پس لطفا با protected

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا