适用范围

1. 作用:

  1. 作为对象类型限制对象内容, 使其与接口有严格对应(不少不多,值或类型相同) ^cda4e6
    1. 当然可也以设置至少包含属性, 这样对象中的属性只能多, 不能少
    2. 限制方法的返回值类型
    3. 限制数组的索引值类型
  2. 若干个类实现了A接口,则A接口的内容都是这些类所共有的
  3. 多个重复声明的interface会自动合并, 后面的优先

命名规范

  • ts中接口可以使用I前缀表示这是一个接口类型

2. TypeScript 接口语法:

1. 定义接口语法:

interface 接口名{
属性名1:类型或值;
属性名2:类型或值;
属性名3?:类型或值;
[随意名字:类型]:类型或值;
}

1.1. 说明:

  1. 属性名3?:类型或值;表示这个属性可有可无
  2. [随意名字:类型]:类型或值;这个是可选的
    1. 如果没有, 那么实例对象中的属性要与接口完全相等
    2. 如果有, 那么实例对象中多余的属性, 只要满足这个任意类型, 那么都是可以的
  3. 不能在类中声明接口⭐

4. 接口继承多个接口语法:

Child_interface_name extends super_interface1_name, super_interface2_name
//逗号分隔

场景

  • 实现接口内逻辑的聚合, 为逻辑解耦提供条件

2. 实现(使用)接口语法:

对象名:接口名
//如果对象实际的属性名或属性类型和接口不对应, 则编译器会报错

3. 限制数组索引值实例:

interface ages { 
   [index:string]:number 
} 
 
var agelist:ages; 
agelist["runoob"] = 15  //类型对应接口的规定, 正确
 
 
// 类型不对应接口的规定,输出  error TS2322: Type '"google"' is not assignable to type 'number'.
agelist[2] = "google"

3.1. 说明:

child::

数组索引类型

数组索引不管用什么类型来约束, 都默认可以接受数字类型

指向原始笔记的链接