2017-01-16 4 views
0

Ich versuche, Typoskript Map Datenstruktur zu verwenden, aber ich habe den Folowing Compiler-Fehler:Typoskript Compiler mit neuen Map kämpfen()

argument of type '(string | number)'[][] is not assignable to parameter of type 'iterable<[{},{}]>

Meine Karte:

export const PostTypeMap = new Map([ 
    [0, 'Link'], 
    [1, 'Status'], 
    [2, 'Photo'], 
    [3, 'Video'], 
    [4, 'Offer'], 
    [5, 'Unknown'], 
    [6, 'Event'] 
]); 

Und mein tsconfig.js:

{ 
    "compilerOptions": { 
    "target": "ES5", 
    "module": "es2015", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "suppressImplicitAnyIndexErrors": true, 
    "allowSyntheticDefaultImports":true 
    }, 
    "awesomeTypescriptLoaderOptions": { 
    "resolveGlobs": true, 
    "forkChecker": true 
    }, 
    "compileOnSave": false, 
    "buildOnSave": false 
} 
+0

Ist 'PostTypeMap' anderswo erklärt? Sogar in einer anderen Datei? Ich habe gerade Ihren Code in [TypeScript Playground] (http://www.typescriptlang.org/play/) eingefügt und es kompiliert. –

+0

Es ist nicht, aber es ist kein Problem mit Namenskollision. Selbst wenn ich es 'dummyMap' nenne, zeigt es immer noch denselben Fehler. – codeepic

+0

Ändern Sie Ihr "Ziel": "ES5", "zu" "Ziel": "ES6", ". Irgendein Unterschied jetzt? Ich glaube, dass 'Map' in' ES6' eingeführt wurde, daher hat TypeScript Probleme, den Typ von 'PostTypeMap' zu ermitteln. Sieht aus wie es denkt, dass es ein 'Tuple' ist? –

Antwort

0

Es ist nece ssar, um anzuzeigen, dass es immer nur zwei Elemente in den verschachtelten Arrays sein, nicht nur eine beliebige Anzahl der Objekte:

export const PostTypeMap = <[number, string][]> new Map([ 
    [0, 'Link'], 
    [1, 'Status'], 
    [2, 'Photo'], 
    [3, 'Video'], 
    [4, 'Offer'], 
    [5, 'Unknown'], 
    [6, 'Event'] 
]); 
Verwandte Themen