What does the type { [key: string]: boolean; } mean?

Run into such thing lately, a function declaration:

static required(control: AbstractControl): {
  [key: string]: boolean;
};

What is this return value? An object with an arbitrary amount of properties, where each of them is a boolean and has a name, which appears to be a string? It's more of a typescript question I guess, but just in case someone wonders where I found that - it's Angular's Validators class.


This is a key/value structure, named index signatures (or previously known as indexable Types) in typescript.

The key is a string and the value is a boolean. For example:

let map : { [key: string]: boolean} = {};
map["foo"] = true;
map["bar"] = false;
map.foo = true;
map["foobar"] = "foo"; // Throws exception
map[1] = true; // Curiously doesn't throws exception

Check this sample on the Typescript Playground.