TS1329: '{0}' استدلال های کمی را می پذیرد که به عنوان دکوراتور در اینجا مورد استفاده قرار می گیرد. آیا منظورتان این بود که ابتدا آن را صدا کنید و “@{0} () را بنویسید؟

TypeScript یک زبان برنامه نویسی قدرتمند است که با افزودن انواع استاتیک بر روی JavaScript ساخته می شود (اینها حاشیه نویسی هستند که می توانند اطلاعاتی در مورد نوع داده ها در برنامه ها ارائه دهند). این امر به توسعه دهندگان این امکان را می دهد تا در طول توسعه خطاهای احتمالی را بهبود بخشند و استحکام کد را بهبود بخشند. انواع بخشی جدایی ناپذیر از TypeScript است و به شما امکان می دهد تعریف کنید که چه نوع متغیرهایی یا عملکردی می تواند داشته باشد و منجر به ساختار بهتر و حفظ شده تر می شود.
اگر مشتاق هستید که در مورد TypeScript اطلاعات بیشتری کسب کنید یا نحوه کدگذاری با ابزارهایی مانند GPTeach را کشف کنید ، لطفاً وبلاگ من را برای بینش و به روزرسانی دنبال کنید!
انواع چیست؟
انواع در TypeScript به عنوان راهی برای توصیف شکل و رفتار داده ها عمل می کنند. آنها می توانند انواع ابتدایی باشند (مانند string
با number
وت boolean
) یا انواع پیچیده تر ، مانند آرایه ها ، تاپل ها و انواع تعریف شده توسط کاربر ، از جمله رابط ها و عناصر. به عنوان مثال:
let message: string = "Hello, TypeScript!";
let count: number = 42;
let isCompleted: boolean = true;
با تعریف صریح انواع ، TypeScript به گرفتن خطاها و ارائه پشتیبانی از ابزار بهتر کمک می کند.
درک خطای TS1329
خطای TS1329: '{0}' آرگومان های کمی را می پذیرد که در اینجا به عنوان دکوراسیون استفاده می شود. آیا منظورتان این بود که ابتدا آن را صدا کنید و “@{0} () را بنویسید؟ غالباً وقتی دکوراسیون ها (توابع ویژه ای که کلاس ها یا خصوصیات را تغییر می دهند) به اشتباه در TypeScript استفاده می شوند ، می توانند بوجود بیایند. دکوراتورها برای عملکرد صحیح به پارامترهای خاصی احتیاج دارند و اگر پارامترهای کمتری از حد انتظار دریافت کنند ، TypeScript این خطا را افزایش می دهد.
نمونه TS1329
فرض کنید یک دکوراتور مانند این تعریف شده است:
function Log(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
console.log(`Calling ${propertyKey}`);
}
اگر سعی می کنید از آن مانند این استفاده کنید:
@Log
class MyClass {
myMethod() {
console.log("Hello!");
}
}
شما با خطای TS1329 روبرو می شوید: '{0}' آرگومان های کمی را می پذیرد که به عنوان دکوراتور در اینجا استفاده شود. آیا منظورتان این بود که ابتدا آن را صدا کنید و “@{0} () را بنویسید؟ این به این دلیل است که Log
دکوراتور انتظار سه پارامتر را دارد ، اما به هیچ وجه داده نمی شود.
رفع TS1329
برای حل این مسئله ، می توانید با اضافه کردن پرانتز ، دکوراتور را به درستی فراخوانی کنید:
@Log
class MyClass {
myMethod() {
console.log("Hello!");
}
}
با این حال ، این مسئله پارامتر را حل نمی کند. شما باید آن را با پارامترهای مورد نیاز یادداشت کنید:
function Log() {
return function(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
console.log(`Calling ${propertyKey}`);
}
}
@Log()
class MyClass {
myMethod() {
console.log("Hello!");
}
}
با اصلاح Log
دکوراتور ، ما آن را بدون پارامترها تعریف می کنیم و عملکرد دکوراتور واقعی را برمی گرداند. این به دنبال ساختاری است که Typescript انتظار دارد ، در نتیجه از خطای TS1329 جلوگیری می شود.
مهم برای دانستن!
- دکوراتورها باید توابع باشند: همیشه اطمینان حاصل کنید که دکوراتورها به عنوان توابع بازگرداندن عملکرد دیگری برای استفاده مناسب ایجاد می شوند.
- پارامترها: به پارامترهایی که یک دکوراتور نیاز دارد توجه داشته باشید. در غیر این صورت ، TypeScript خطایی مانند TS1329 را به وجود می آورد.
متداول
س: دکوراتورها در TypeScript چیست؟
پاسخ: دکوراتورها اعلامیه های ویژه ای هستند که می توانند کلاس ها یا اعضای کلاس را در TypeScript تغییر دهند.
س: چگونه می توانم یک دکوراتور معتبر را تعریف کنم؟
پاسخ: یک دکوراتور معتبر یا باید پارامترهایی را در نظر بگیرد یا بدون پارامترها تعریف شود اما هنوز هم عملکردی را برای منطق دکوراسیون واقعی بازگرداند.
مهم برای دانستن!
- انواع را بررسی کنید: همیشه تأیید کنید که دکوراتور شما با انواع و ساختار مورد انتظار در TypeScript مطابقت دارد.
به طور خلاصه ، هنگامی که با خطای TS1329 روبرو می شوید: '{0}' آرگومان های کمی را قبول می کند که در اینجا به عنوان دکوراسیون استفاده می شود. آیا منظور شما این است که ابتدا با آن تماس بگیرید و “@{0} () را بنویسید؟ ، اطمینان حاصل کنید که پارامترهای مناسب را می گذرانید و دکوراتور به درستی تعریف شده است. انجام این کار به شما کمک می کند تا از قدرت Typescript به طور مؤثر استفاده کنید و ناامیدی را هنگام کدگذاری به حداقل برسانید. برنامه نویسی مبارک!