TS2326: انواع خاصیت '{0}' ناسازگار هستند

TypeScript یک سوپراست استاتیک تایپ شده از JavaScript است که برای افزایش بهره وری توسعه دهنده و کیفیت کد طراحی شده است. در اصل ، TypeScript JavaScript را با افزودن تایپ استاتیک گسترش می دهد (شما انواع متغیرها ، پارامترهای عملکرد و اشیاء را تعریف می کنید). با گرفتن خطاها در زمان کامپایل ، به توسعه دهندگان کمک می کند تا کد قابل پیش بینی و بدون خطا را بنویسند ، که به ویژه در پروژه های بزرگتر یا پیچیده تر مفید است. اگر به دنبال یادگیری TypeScript هستید یا ابزارهای برنامه نویسی پیشرفته AI مانند GPTEACH را کشف می کنید ، برای راهنمایی ، آموزش و منابع کدگذاری مفید در وبلاگ ما مشترک شوید.
در این مقاله ، ما در مورد خطای Typescript بحث خواهیم کرد TS2326: انواع خاصیت '{0}' ناسازگار هستند، توضیح دهید که چرا این اتفاق می افتد ، و چگونه می توان آن را حل کرد. قبل از آن ، ما نگاهی دقیق تر خواهیم داشت که “انواع” در Typescript چیست زیرا پایه و اساس درک این خطا را تشکیل می دهند.
انواع در TypeScript چیست؟
در typcript ، انواع مانند طرح هایی هستند که تعریف می کنند که یک متغیر چه نوع مقداری را می تواند نگه دارد. به عنوان مثال ، یک متغیر می تواند یک باشد string
، الف number
، الف boolean
، یا حتی ترکیبی از انواع مختلف. با اطمینان از اینکه متغیرهای شما به ساختار مورد انتظار پایبند هستند ، انواع ایمنی را به کد خود اضافه می کنند ، که به جلوگیری از خطاهای زمان اجرا کمک می کند.
نمونه ای از انواع اساسی در TypeScript
let name: string = 'John'; // 'name' must hold a string
let age: number = 25; // 'age' must hold a number
let isActive: boolean = true; // 'isActive' must hold a boolean
با تعریف انواع صریح ، TypeScript استفاده صحیح از متغیرها و توابع را تضمین می کند. بدون تعاریف نوع مناسب ، شما خطر معرفی اشکالات ناشی از مقادیر ناخواسته را دارید.
با این درک انواع ، بیایید به خطا شیرجه بزنیم TS2326: انواع خاصیت '{0}' ناسازگار هستند، علل و راه حل های آن.
درک خطا: TS2326: انواع خاصیت “{0}” ناسازگار هستند
خطا TS2326: انواع خاصیت '{0}' ناسازگار هستند هنگامی اتفاق می افتد که عدم تطابق بین انواع خاصیت در دو ساختار مختلف (مانند اشیاء یا رابط) وجود داشته باشد. در اصل ، TypeScript به شما می گوید که دو ویژگی از نظر تعاریف نوع آنها تراز نمی شوند.
بیایید این را با یک مثال تجزیه کنیم.
مثال 1: انواع خاصیت نامناسب بین رابط ها
interface Car {
make: string;
model: string;
year: number;
}
interface ElectricCar {
make: string;
model: string;
year: string; // Here is the issue: 'year' is a string, not a number
}
const myElectricCar: ElectricCar = {
make: 'Tesla',
model: 'Model 3',
year: '2023' // Since year is 'string', TypeScript will warn us if we use it as a 'Car'
};
const compareCars = (car1: Car, car2: Car) => {
console.log(car1.make, car2.model);
};
// Error: TS2326: Types of property 'year' are incompatible!
compareCars(myElectricCar, { make: 'Toyota', model: 'Camry', year: 2020 });
در این مثال ، year
دارایی در ElectricCar
به عنوان یک تعریف شده است string
، اما Car
انتظار year
بودن number
بشر وقتی compareCars
تلاش برای استفاده myElectricCar
(که ElectricCar
) ، Typscript خطایی را ایجاد می کند زیرا year
مطابقت ندارد
چگونه آن را اصلاح کنیم
برای حل این خطا ، اطمینان حاصل کنید که نوع تعاریف از خصوصیات متضاد مطابقت دارد.
مثال به روز شده: رفع ناسازگاری
interface Car {
make: string;
model: string;
year: number;
}
interface ElectricCar {
make: string;
model: string;
year: number; // Fix the type mismatch: 'year' should be a number
}
const myElectricCar: ElectricCar = {
make: 'Tesla',
model: 'Model 3',
year: 2023 // Now it matches 'Car'
};
const compareCars = (car1: Car, car2: Car) => {
console.log(car1.make, car2.model);
};
// No error now
compareCars(myElectricCar, { make: 'Toyota', model: 'Camry', year: 2020 });
با اطمینان از تراز کردن انواع خاصیت Car
وت ElectricCar
، TS2326: انواع خاصیت '{0}' ناسازگار هستند خطا برطرف شده است
چرا TS2326 اتفاق می افتد؟
-
انواع ناسازگار: شایع ترین علت انواع ناسازگار بین دو شی یا رابط است. همانطور که در بالا نشان داده شده است ، اگر یک خاصیت در یک ساختار به عنوان a تعریف شود
string
اما دیگری انتظار داردnumber
، خطا رخ می دهد. -
همپوشانی جزئی: گاهی اوقات ، ممکن است یک شیء را به طور جزئی یا نادرست تعریف کنید.
-
امضاهای عملکرد نادرست: انتقال آرگومان های ناسازگار به یک پارامتر عملکرد نیز می تواند این خطا را ایجاد کند.
دانستن مهم است – TypeScript سختگیرانه است
TypeScript برای اطمینان از اجرای کد شما مطابق آنچه انتظار می رود ، حتی قبل از زمان اجرا ، از نوع دقیق استفاده می کند. به همین دلیل خطاهایی مانند آن ایجاد می کند TS2326: انواع خاصیت '{0}' ناسازگار هستند اگر حتی یک عدم تطابق جزئی در انواع وجود داشته باشد. اگرچه این ممکن است محدود کننده باشد ، از اشکالات جلوگیری می کند که در غیر این صورت می توانند کد شما را در تولید خراب کنند.
سوالات متداول (سؤالات متداول)
چگونه می توانم TS2326 را اشکال زدایی کنم: انواع خاصیت '{0}' ناسازگار هستند؟
- مرحله 1: تعریف نوع ویژگی ذکر شده در خطا را بررسی کنید.
- مرحله 2: اطمینان حاصل کنید که تمام تعاریف مربوطه (به عنوان مثال ، رابط به رابط یا پارامتر به عملکرد-امضای).
- مرحله 3: برای اطمینان از یکنواختی در اعلامیه های نوع ، اصلاحاتی را انجام دهید.
آیا می توانم با غیرفعال کردن نوع بررسی از TS2326 جلوگیری کنم؟
در حالی که می توانید با استفاده از گزینه های کامپایلر ، قوانین سختگیرانه Typecript را شل کنید (به عنوان مثال ، strict: false
) ، توصیه نمی شود. حل صحیح درگیری های نوع باعث می شود که پایگاه کد شما قابل اطمینان تر و حفظ شود.
چه ابزاری می تواند به مشکلات نوع اشکال زدایی کمک کند؟
ابزارهایی مانند IDES (کد Visual Studio) و سیستم عامل های یادگیری AI مانند GPTEACH می توانند به شما در شناسایی و حل و فصل مشکلات نوع TypeScript به طور مؤثر کمک کنند.
مهم برای دانستن – تعریف نوع به جلوگیری از خطاهای آینده کمک می کند
به وضوح تعریف انواع و رابط های کد شما تضمین می کند که تغییرات بعدی در پایه کد شما منجر به خطاهای غیر منتظره نمی شود. برای جلوگیری از سردرگمی از تعاریف دقیق برای اشیاء ، پارامترها و انواع بازگشت استفاده کنید.
لیست خلاصه: حل TS2326
- انواع املاک را در تعاریف متناقض مقایسه کنید.
- از تعاریف نوع مداوم (به عنوان مثال ، بین رابط ها یا اشیاء) اطمینان حاصل کنید.
- از ابزارهای تجزیه و تحلیل استاتیک TypeScript برای زود گرفتن این مسائل استفاده کنید.
با استفاده از این راه حل ها ، شما قادر به حل و فصل هستید TS2326: انواع خاصیت '{0}' ناسازگار هستند خطا و بهتر درک کنید که چگونه TypeScript سازگاری نوع را انجام می دهد.
به یاد داشته باشید ، خطاهایی مانند این فرصت هایی برای بهبود درک شما از تایپ استاتیک و نوشتن کد قوی تر است. اگر می خواهید راهنمایی گام به گام را دوست داشته باشید ، اصول اولیه TypeScript را مجدداً مورد بررسی قرار دهید یا سیستم عامل های مبتنی بر هوش مصنوعی مانند GPTEACH را در نظر بگیرید تا مهارت های خود را تیز کنید.