总结TypeScript相关知识-type 和 interface

  • type 新类型名 = 现有类型:定义类型别名,通过类型别名,可以将复杂的类型定义抽象为一个更简单的名字,并在代码中反复使用;可以用于基础类型、对象类型、联合类型、数组、函数等各种类型

    type UserType = {
      name: string;
      age?: number;
      readonly height: number
    };
    
    let user: UserType = {
      name: "Alice",
      height: 188,
    };
    
  • interface接口是一种用于定义对象、函数、类等结构的方式

    interface IUser {
      name: string;
      age?: number;
      readonly height: number
    }
    
    let user: IUser = {
      name: "Alice",
      height: 188,
    };
    
  • 两者区别:

    • 区别一type 类型使用范围更广,而 interface 主要用于定义对象的形状

    • 区别二同名接口可以合并(声明合并),如果两个地方声明了同名的接口,TypeScript 会将它们的成员自动合并到一个接口中

      interface ILocal {
        x: number
        y: number
      }
      
      interface ILocal {
        z: number
      }
      
      const local: ILocal = { // 会合并,必须包含x,y,z
        x: 100,
        y: 200,
        z: 300
      }
      
    • 区别三接口可以继承一个或多个其他接口,使得多个接口可以共享相同的属性和方法定义

      interface IAdult {
        name: string,
        age: number
      }
      
      interface IWorker {
        working: () => void
      }
      
      interface ICoder extends IAdult, IWorker {
        eatting: () => void
      }
      
      const student: ICoder = {
        name: 'coder',
        age: 16,
        working() {
          console.log('working')
        },
        eatting() {
          console.log('eatting')
        }
      }
      
    • 区别四类可以通过 implements 关键字来实现接口,保证类中定义了接口所要求的所有属性和方法,具体学习这篇文章:待后面补充

上一篇:Python类和子类的小示例:建模农场


下一篇:nacos1.4-CP架构源码