Аргумент типа ‘any[]’ не может быть присвоен параметру типа ‘(значение: [any, Campaign[]]) => void’

#angular #typescript #rxjs #rxjs5

#angular #машинописный текст #rxjs #rxjs5

Вопрос:

Привет, я получаю ошибку typescript в своем коде. ниже приведен мой код .

 combineLatest(
          this.translateService.get('CLONE_FLIGHT', { item: this.flight.name}),
          this.flightsService.getCampaignsToClone(this.flight.id)
        ).subscribe([  header, campaigns]) => { 
          console.log('test');
        });
  

ошибка, которую я получаю,

 Argument of type 'any[]' is not assignable to parameter of type '(value: [any, Campaign[]]) => void'.
  Type 'any[]' provides no match for the signature '(value: [any, Campaign[]]): void'.ts(2345)
Cannot find name 'campaigns'.ts(2304)
  

сигнатура метода для TranslateService.get выглядит следующим образом

 get(key: string | Array<string>, interpolateParams?: Object): Observable<string | any>;
  

вызов метода flightsService.getCampaignsToClone(this.flight.id )

является

 getCampaignsToClone(flightId: string){
    let campaigns: Campaign[] = [
      {  id:"1", name: "test campaign 001", createdOn:"",lastUpdated: "", createdBy: null,
      type:null, status: null, startDate: null, endDate: null, budget: null, description: "",
      account: null },
      {  id:"2", name: "test campaign 002", createdOn:"",lastUpdated: "", createdBy: null,
      type:null, status: null, startDate: null, endDate: null, budget: null, description: "",
      account: null },
      {  id:"3", name: "test campaign 003", createdOn:"",lastUpdated: "", createdBy: null,
      type:null, status: null, startDate: null, endDate: null, budget: null, description: "",
      account: null }
     ];
    return Observable.of(campaigns);

  }
  

код, которого я хочу достичь, сначала разрешает свойство ‘CLONE_FLIGHT’ и загружает объекты campaign, затем в subscribe я хочу вызвать модальное диалоговое окно. Однако я получаю указанную выше ошибку
я новичок в typescript и наблюдаемых.

ценю любую помощь, большое вам спасибо, прасант

Ответ №1:

это была синтаксическая проблема, которую я должен был написать так

 combineLatest(
  this.translateService.get('CLONE_FLIGHT', { item: this.flight.name}),
  this.flightsService.getCampaignsToClone(this.flight.id)
).subscribe( ([header, campaigns]) => { 
  console.log(header);
});