我们讨论接口中的 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 的变量可以直接赋值,但是传递的是引用