在 TypeScript 中,接口(Interface)是一种自定义类型的方式。它允许开发者定义对象的形状,描述该对象应该具有的属性和方法。 接口的基本语法如下:
interface InterfaceName {
property1: type;
property2: type;
// ...
methodName(parameter: type): returnType;
}
其中:
下面是一个简单的接口示例:
interface Person {
name: string;
age: number;
sayHello(): void;
}
let john: Person = {
name: 'John Doe',
age: 30,
sayHello() {
console.log(`Hello, my name is ${this.name}`);
}
};
john.sayHello(); // 输出: "Hello, my name is John Doe"
在这个例子中,我们定义了一个 Person 接口,它包含 name、age 属性和 sayHello 方法。然后我们创建了一个实现了 Person 接口的对象 john。 接口可以用于描述各种类型的对象:
interface Point {
x: number;
y: number;
}
let point: Point = { x: 1, y: 2 };
interface Greeter {
(name: string): string;
}
let greet: Greeter = function(name) {
return `Hello, ${name}!`;
};
interface StringArray {
[index: number]: string;
}
let myArray: StringArray = ['hello', 'world'];
interface Animal {
name: string;
makeSound(): void;
}
class Dog implements Animal {
name: string;
makeSound() {
console.log('Woof!');
}
}
// 定义构造函数接口
interface PersonConstructor {
new(name: string, age: number): Person;
}
// 定义 Person 类
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
introduce() {
console.log(`Hi, my name is ${this.name} and I'm ${this.age} years old.`);
}
}
// 使用构造函数接口创建 Person 类的实例
function createPerson(ctor: PersonConstructor, name: string, age: number): Person {
return new ctor(name, age);
}
let john = createPerson(Person, 'John', 30);
john.introduce(); // 输出: "Hi, my name is John and I'm 30 years old."
接口是 TypeScript 中非常强大的一个特性。它可以帮助开发者定义和描述数据的结构,提高代码的可读性和可维护性。同时,TypeScript 的类型系统会确保代码遵循接口的定义,从而增强代码的可靠性。