在 TypeScript 中,接口(Interfaces)用于定义对象的结构和类型。通过接口,你可以描述对象应该具有的属性和方法。以下是一些关于 TypeScript 接口的基本概念和用法:

1. 对象属性接口:
   用于描述对象应该具有的属性和它们的类型。
   interface Person {
       firstName: string;
       lastName: string;
       age: number;
   }

   let person: Person = {
       firstName: "John",
       lastName: "Doe",
       age: 30
   };

2. 可选属性:
   通过在属性名后加上 ? 来表示可选属性。
   interface Car {
       brand: string;
       model: string;
       year?: number; // 可选属性
   }

   let myCar: Car = {
       brand: "Toyota",
       model: "Camry"
   };

3. 只读属性:
   使用 readonly 关键字表示只读属性,一旦赋值后不能再修改。
   interface Point {
       readonly x: number;
       readonly y: number;
   }

   let point: Point = { x: 10, y: 20 };
   // point.x = 5; // 错误,只读属性不可修改

4. 函数类型接口:
   用于描述函数的参数和返回值类型。
   interface Calculator {
       (a: number, b: number): number;
   }

   let add: Calculator = (x, y) => x + y;

5. 类类型接口:
   描述类的实例部分和静态部分的类型。
   interface Clock {
       currentTime: Date;
       setTime(d: Date): void;
   }

   class ClockImplementation implements Clock {
       currentTime: Date = new Date();

       setTime(newTime: Date): void {
           this.currentTime = newTime;
       }
   }

6. 继承接口:
   一个接口可以继承自另一个接口,从而拥有被继承接口的所有成员。
   interface Shape {
       color: string;
   }

   interface Square extends Shape {
       sideLength: number;
   }

   let square: Square = {
       color: "red",
       sideLength: 10
   };

7. 混合类型接口:
   描述一个同时具有多个类型的对象。
   interface Counter {
       (): number;
       reset(): void;
   }

   function createCounter(): Counter {
       let count = 0;
       let counter = () => count++;
       counter.reset = () => count = 0;
       return counter;
   }

   let myCounter = createCounter();
   console.log(myCounter()); // 0
   myCounter.reset();
   console.log(myCounter()); // 0

这些是 TypeScript 中接口的基本用法。接口提供了一种结构化的方式来定义对象的形状,使代码更具可读性和可维护性。接口的使用还能提高代码的灵活性,特别是在多人协作或开发大型应用程序时。


转载请注明出处:http://www.zyzy.cn/article/detail/4695/TypeScript