我们讨论接口中的 index signature。
该特性主要作用是能够让接口包含动态的属性(Properties),比如我们定义一个 person 接口,当然我们之前已经知道一些必要的字段,比如名字性别等等,但是随着时代的变迁,对于person可能还会有一些其他的字段,比如twitter,微博等等。我们不可能在设计 person interface 的时候就包含了所有属性,但是我们可以定一个 index signature, 这样如果我们想加入 twitter, 那么就可以用 ['twiter'] 来添加。
代码如下(代码可以在官方playground运行)
1 | interface StringArray { |
通过代码我们可以知道,
- 这里的 index-signature 的返回值类型可以是任意值
any - 我们可以用
['twitter']和.twitter两种方式访问属性 - 由于我们定义了
Address类型的address, 所以 index-signature 的返回值必须是any,或者是Address的超集。 - interface 的变量可以直接赋值,但是传递的是引用