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

Typescript

Typescript Problem Overview


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.

Typescript Solutions


Solution 1 - Typescript

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLeonid BorView Question on Stackoverflow
Solution 1 - TypescriptLeonardo ChaiaView Answer on Stackoverflow