Typoskript: Index Signatur fehlt in der Art

Möchte ich MyInterface.dic wie ein Wörterbuch name: value, ich definiere es wie folgt:

interface MyInterface {
    dic: { [name: string]: number }
}

Nun habe ich eine Funktion erstellen, die wartet auf meine Art:

function foo(a: MyInterface) {
    ...
}

Und der Eingang:

let o = {
    dic: {
        'a': 3,
        'b': 5
    }
}

Erwarte ich foo(o) richtig zu sein, aber der compiler ist fallend:

foo(o) //Typescript error: Index signature is missing in type { 'a': number, 'b': number }

Ich weiß, es ist ein mögliches casting: let o: MyInterface = { ... } die den trick tun, aber die Frage ist, warum Typoskript ist nicht zu erkennen, mein Typ?


Extra: funktioniert gut, wenn o deklariert ist inline:

foo({ 
  dic: {
    'a': 3, 
    'b': 5
  }
})
InformationsquelleAutor Manu | 2016-05-03
Schreibe einen Kommentar