برنامه نویسی

TS1119: یک شیء تحت اللفظی نمی تواند دارای ویژگی و دسترسی به یک نام باشد

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

اگر علاقه مند به یادگیری بیشتر در مورد TypeScript یا استفاده از ابزارهای هوش مصنوعی برای تقویت مهارت های کدنویسی خود هستید، توصیه می کنم در وبلاگ من مشترک شوید یا برای منابع آموزشی کدنویسی gpteach را بررسی کنید.

زبان سوپرست چیست؟

یک زبان سوپرست بر زبان دیگری ساخته می شود و ویژگی های جدیدی را اضافه می کند و در عین حال کاملاً با زبان اصلی سازگار است. در مورد تایپ اسکریپت، این ابر مجموعه ای از جاوا اسکریپت است، به این معنی که هر کد جاوا اسکریپت معتبر را می توان بدون تغییر در تایپ اسکریپت اجرا کرد. این امر باعث می شود توسعه دهندگان جاوا اسکریپت به تدریج تایپ اسکریپت را بپذیرند و کدنویسی خود را با تعاریف نوع و ابزار بهتر تقویت کنند.


درک TS1119: یک شیء به معنای واقعی کلمه نمی تواند دارای ویژگی و دسترسی به یک نام باشد

هنگام کار با TypeScript، ممکن است با این خطا مواجه شوید TS1119: یک شیء تحت اللفظی نمی تواند دارای ویژگی و دسترسی به یک نام باشد. این خطا معمولاً زمانی رخ می‌دهد که شما سعی می‌کنید هم یک ویژگی و هم یک Accessor (گیرنده/تنظیم کننده) را با یک نام در یک شی به معنای واقعی کلمه تعریف کنید.

در اینجا یک سناریوی رایج است که منجر به این خطا می شود:

const obj = {
    name: "John",
    get name() { return this.name; }
};
وارد حالت تمام صفحه شوید

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

در این مثال سعی داریم یک شی را تعریف کنیم obj با یک ملک name و یک گیرنده name. TypeScript می اندازد TS1119 خطا زیرا مبهم است که name به هنگام دسترسی اشاره دارد obj.name.

نحوه تعمیر TS1119

برای حل و فصل TS1119 خطا، می توانید نام ویژگی یا Accessor را تغییر دهید. در اینجا دو رویکرد معتبر وجود دارد:

  1. تغییر نام ملک:
const obj = {
    userName: "John",
    get name() { return this.userName; }
};
وارد حالت تمام صفحه شوید

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

  1. استفاده از یک نام دسترسی دیگر:
const obj = {
    name: "John",
    get fullName() { return this.name; }
};
وارد حالت تمام صفحه شوید

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

هر دو رویکرد تعارضی را که منجر به این می شود، از بین می برند TS1119 خطا، اجازه می دهد کد شما با موفقیت کامپایل شود.

مهم است بدانید!

  • هنگام تعریف یک شی به معنای واقعی کلمه در TypeScript، اطمینان حاصل کنید که نام ویژگی ها در بین ویژگی ها و دسترسی ها منحصر به فرد هستند تا از TS1119 خطا
  • به یاد داشته باشید که تایپ اسکریپت با هدف ارائه ایمنی نوع و وضوح در کد شما است، بنابراین اجتناب از تضاد نام بسیار مهم است.

سوالات متداول

س: وقتی TypeScript TS1119 را افزایش می دهد به چه معناست؟

A: این نشان می دهد که یک تضاد نام گذاری بین یک ویژگی و یک Accessor در همان شیء وجود دارد که می تواند منجر به ابهام در کد شود.

س: چرا باید به جای جاوا اسکریپت ساده از TypeScript استفاده کنم؟

پاسخ: TypeScript تایپ استاتیک اختیاری را فراهم می کند، که امکان تشخیص زودهنگام خطا، ابزار بهتر، تکمیل خودکار در IDE ها و کدهای قابل نگهداری بیشتر را فراهم می کند.

مهم است بدانید!

  • همیشه مطمئن شوید که از نام‌های متمایز برای ویژگی‌ها و دسترسی‌ها در یک شی استفاده می‌کنید.
  • از ادغام های IDE TypeScript برای کمک به یافتن تضادهای نامگذاری در مراحل اولیه توسعه استفاده کنید.

در خاتمه، مواجه شدن با TS1119: یک شیء تحت اللفظی نمی تواند دارای ویژگی و دسترسی به یک نام باشد یک دام رایج در TypeScript است. برای جلوگیری از آن، قوانین نامگذاری واضح را حفظ کنید و مطمئن شوید که نام دارایی و دسترسی شما با هم تداخل ندارند. با رعایت این شیوه‌ها، می‌توانید از ایمنی نوع و ویژگی‌هایی که TypeScript ارائه می‌دهد بهره‌مند شوید و گردش کار توسعه خود را بهبود بخشید.

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

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

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

دکمه بازگشت به بالا