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.