奇怪的可转位styping

时间:2016-09-21 11:33:54

标签: typescript

Typescript(2.0)没有给出错误:

let x: { [index: string]: Object } = {1: 2}

我发现有两个潜在的错误:

  1. 索引字段是数字类型,但应为字符串
  2. 项目类型也是数字,但应该是对象类型
  3. 为什么会通过?

1 个答案:

答案 0 :(得分:2)

  1. Indexable Types docs中注意到:
  2.   

    支持的索引签名有两种类型:字符串和数字。   可以支持两种类型的索引器,但类型   从数字索引器返回的必须是返回类型的子类型   来自字符串索引器。这是因为当用数字索引时,   在索引之前,JavaScript实际上会将其转换为字符串   一个东西。这意味着使用100(数字)的索引是相同的   用“100”(一个字符串)作为索引的东西,所以两者需要   是一致的。

    当您使用数字作为索引而不是字符串时,它接受它的原因 索引始终是字符串。

    1. Any is explained文档的部分中,注意到:
    2.   

      ... Object类型的变量只允许您为其分配任何值   他们......

      使用以下示例:

      Object

      基本上,{{1}}可以是任何东西。