提供的参数与呼叫目标的任何签名都不匹配

时间:2016-02-26 02:00:34

标签: typescript angular

当我在方法中使用参数装饰器时,我收到此构建错误。该类实现了一个接口。这是界面和类:

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参数旁边的参数装饰器。现在我不能只是删除它,因为我需要它所以我想知道是否有一种方法来保持接口定义和装饰器。接口中不允许使用装饰器,因此不能选择。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

  

提供的参数与呼叫目标的任何签名都不匹配。

最快的解决方法是const BodyAny:any = Body并使用BodyAny。否则,请修复Body的类型定义。

答案 1 :(得分:0)

我遇到了同样的错误,问题是它抱怨的服务缺少@Injectable()

只需导入并添加装饰器即可将其整理出来!