2016-05-31 14 views
0

Ich habe gerade angefangen mit Angular 2 zu arbeiten und habe immer noch Probleme mit der korrekten Verwendung von Typoskript. Ich habe das folgende benutzerdefinierte Rohr, das mich über Objekte iterieren hilft:Typescript TS7017: implizit beliebig für eine Pipe in Angular 2

import { Pipe, PipeTransform } from '@angular/core'; 

@Pipe({ name: 'mapToIterable' }) 
export class MapToIterablePipe implements PipeTransform { 
    transform(dict: Object): any { 
     var a:any = []; 
     for (var key in dict) { 
      if (dict.hasOwnProperty(key)) { 
     --->  a.push({ key: key, value: dict[key] }); 
      } 
     } 
     return a; 
    } 
} 

Als ich das kompilieren jedoch bekomme ich einen „Fehler TS7017. Index Unterschrift des Objekttyps implizit eine‚beliebige‘Typ hat mir nicht wirklich verstehen, wie ich meine Funktion in einer solchen Art und Weise schreiben kann, dass dieser Fehler verschwindet

Antwort

0

Das Problem liegt in dieser Zeile:.

var a:any = []; 

Sie definieren a sein vom Typ any aber verwenden es, als ob es wurden als ein Arraydefiniert. Sie können es mit einer der folgenden Optionen beheben:

// explicitly define a as an array of any's 
var a: any[] = []; 
// allow TypeScript to infer the type as an array 
var a = []; 
+0

Hmm, das hat den Trick nicht gemacht. Die Fehlermeldung bezieht sich auch auf Zeile 9, diejenige, in die ich einen Pfeil gesetzt habe. Ihre Lösung gibt mir immer wieder: Fehler TS7017: Die Index-Signatur des Objekttyps hat implizit den Typ 'any'. – hY8vVpf3tyR57Xib

+0

Scheint auf dem Spielplatz gut zu funktionieren, vielleicht hast du ein anderes Problem lokal (vielleicht deine tsconfig.json)? – Brocco

Verwandte Themen