类型{[key:string]:boolean; } 意思?

Leo*_*Bor 28 typescript

最近遇到这样的事情,一个函数声明:

static required(control: AbstractControl): {
        [key: string]: boolean;
    };
Run Code Online (Sandbox Code Playgroud)

这个回报值是多少?具有任意数量属性的对象,其中每个属性都是布尔值并且具有名称,它看起来像是字符串?我猜这更像是一个打字稿问题,但万一有人想知道我发现了什么 - 这是Angular的Validators课程.

Leo*_*aia 31

这是一个关键/价值结构.关键是a string,值是a boolean.例如:

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
Run Code Online (Sandbox Code Playgroud)

在Typescript Playground上查看此示例.

可索引类型.

  • 为什么`map.foo = true; //抛出异常`?? (9认同)
  • @lonewarrior556 代码“map.foo = true”实际上不会抛出异常。原始答案声称确实如此,但这是不正确的,并且答案已相应地[更新](https://stackoverflow.com/posts/43396767/revisions)。然而,TypeScript Playground 链接仍然包含错误的注释。 (3认同)