جاوااسکریپت - تایپاسکریپت در promise.then خطا میدهد


کد زیر را در نظر بگیرید:

Promise.resolve('hello')
    .then(a => console.log(a))
    .catch(() => console.log("error"))
    .then(() => console.log("ok"));

این برای من یک خطای بسیار آزاردهنده ایجاد میکند:

پارامترهای ارائهشده با هیچ امضای هدف فراخوانی مطابقت ندارند: انتظار میرفت ۰ پارامتر باشد اما با ۱ پارامتر فراخوانی شد

توجه داشته باشید که من این مشکل را فقط برای اولین .then(...) دارم، به نظر میرسد catch و then دوم هیچ مشکلی ندارند.

فقط برای ثبت در پرونده؛ کد کار میکند و خروجی میدهد

hello
ok

شاید من هم باید اشاره کنم که در واقع کامپایل میشود. من خطا را در ویژوال استودیو ۲۰۱۷ میبینم. وقتی به تعریف then میروم، فایل lib.es6.d.ts باز میشود. کامپایل با webpack 4 که از TypeScript 2.8.3 استفاده میکند، انجام میشود. در ویژوال استودیو من TypeScript 2.8.1 نصب کردهام (نسخه 2.8.3 را پیدا نمیکنم)

اگر کسی بتواند برای من توضیح دهد چرا این اتفاق میافتد. و حتی بهتر، چگونه از شر آن خلاص شوم؛ بسیار قدردان خواهم بود.

پاسخ شماره ۱

من همان مشکل را داشتم و همانطور که نظر @JBC اشاره کرد، این مشکل ناشی از ReSharper است. در مورد من، من از نسخه نسبتاً قدیمیای (2017.1.1) استفاده میکردم، بنابراین بهروزرسانی به آخرین نسخه (یا غیرفعال کردن کامل آن) این مشکل را حل کرد.