...and where is it documented? 

I've seen examples like this around the place:

```
class MyThing {
  private _layers: { [id: string] : SimpleLayer } = {};
  ...
}

```

...and that works, which is great, but the syntax is confusing to me.

What is 'id'? Why is the syntax not just blah:{string:SimpleLayer}, which *doesnt work*. I've also seen {[name: string]:Type} and {[index:string]:Type}.

I've been looking over typescriptlang.org trying to find where this is actually documented, but I can't seem to find it at all.