typescript - پارامترهای ارائه شده با هیچ امضای تابع مقصد مطابقت ندارند
من هنگام استفاده از دکوریتور پارامتر در یک متد، این خطای ساخت را دریافت میکنم. این کلاس یک اینترفیس را پیادهسازی میکند. در اینجا اینترفیس و کلاس آورده شدهاند:
export interface IClient{
getServerConfig(): Observable<Response> ;
getDashboard(): Observable<Response>;
deploy(channelId: string): Observable<Response>;
}
export class Client implements IClient {
public constructor( @Inject(Http) private http: Http, @Inject(Model) private config: Model) {
super(http, config);
}
public getServerConfig(): Observable<Response> {
return null;
}
public getDashboard(): Observable<Response> {
return null;
}
public deploy(@Body('param') channelId: string): Observable<Response> {
return null;
}
}
وقتی در حال ساخت هستم این خطا را دریافت میکنم
Supplied parameters do not match any signature of call target.
دقیقا در تابع استقرار.
به نظر میرسد مشکل مربوط به دکوراتور پارامتر در کنار پارامتر channelId باشد. حالا نمیتوانم آن را به سادگی حذف کنم چون به آن نیاز دارم، بنابراین میخواهم بدانم آیا راهی برای نگه داشتن تعریف اینترفیس و دکوراتور وجود دارد یا خیر. دکوراتورها در اینترفیسها مجاز نیستند، بنابراین این گزینه وجود ندارد.
نظری دارید؟
پاسخ شماره ۱
پارامترهای ارائه شده با هیچ امضای هدف فراخوانی مطابقت ندارند.
سریعترین راه حل این است که const BodyAny:any=Body را انجام دهید و از BodyAny استفاده کنید. در غیر این صورت، تعریف نوع Body را اصلاح کنید.
پاسخ شماره ۲
من همان خطا را داشتم و مشکل حذف @Injectable() روی سرویسی بود که درباره آن شکایت میکرد.
فقط با وارد کردن و اضافه کردن دکوراتور مشکل حل شد!