جاوااسکریپت - چگونه در تایپاسکریپت خارج از تعریف تابع 'return' کنیم


  1. من نیاز دارم اسکریپت تامپرمانکی خود را با تایپاسکریپت بازنویسی کنم.

  2. راه درست برای بازنویسی این جاوااسکریپت در تایپاسکریپت چیست؟

    if (window.top != window.self ) {
        return;
    }
    

هدف اصلی این است که اجرای اسکریپت متوقف شود اگر در window.top اجرا نشود.

کامپایلر تایپاسکریپت خطا مینویسد TS1108: عبارت 'return' تنها میتواند در بدنه یک تابع استفاده شود.

پاسخ شماره ۱

در اینجا نحوه انجام آن توسط من است. تایپاسکریپت به جاوااسکریپت تبدیل میشود، اما خود جاوااسکریپت نیست.

if(validateIfTop()){

    // MAIN BODY OF YOUR USERSCRIPT GOES HERE

}

validateIfTop():boolean{
    return window.top === window.self;
}

این باید خطای فعلی ترنسپایلر را برطرف کند. اما ممکن است کد شما در وضعیت فعلی به درستی اجرا شود. فقط مسئله این است که بازگرداندن یک مقدار از اسکریپت اصلی معنی ندارد. ممکن است بخواهید نگاه کنید به این سوال: آیا امکان متوقف کردن اجرای جاوااسکریپت وجود دارد؟ این موضوع توضیح میدهد که چگونه یک اسکریپت جاوااسکریپت را متوقف کنیم.

پاسخ شماره ۲

من مشکوکم که توابع اصلی JS شما فقط به طور تصادفی کار میکنند، یعنی در زمان اجرا به طور خاموش شکست میخورند:

من کد را بازسازی میکنم تا همانطور که دیوید پیشنهاد داده بود، در یک بلوک if قرار بگیرد.