在TypeScript中,接口(Interfaces)是一种强大的方式来定义和约束对象的结构。接口可以有不同的模式,以满足不同的需求。以下是一些常见的接口模式及其定义方法:
属性接口用于定义对象的属性结构。
interface Person {
firstName: string;
lastName: string;
}
const person: Person = {
firstName: "John",
lastName: "Doe"
};
方法接口用于定义对象的方法签名。
interface Greeter {
greet(name: string): string;
}
const greeter: Greeter = {
greet(name) {
return `Hello, ${name}!`;
}
};
可选属性允许属性在对象中存在或不存在。
interface Person {
firstName: string;
lastName: string;
middleName?: string; // 可选属性
}
const person: Person = {
firstName: "John",
lastName: "Doe"
};
只读属性在对象创建后不能被修改。
interface Point {
readonly x: number;
readonly y: number;
}
const point: Point = { x: 10, y: 20 };
// point.x = 5; // 错误,只读属性不能被修改
索引签名允许对象具有任意数量的属性,这些属性的键和值类型是已知的。
interface StringDictionary {
[key: string]: string;
}
const dict: StringDictionary = {
key1: "value1",
key2: "value2"
};
函数类型接口用于定义函数的类型。
interface StringValidator {
(str: string): boolean;
}
const isEmail: StringValidator = (str) => {
return str.includes('@');
};
类型别名可以为接口提供一个别名,以便在不同的地方重用。
type UserId = string | number;
interface User {
id: UserId;
name: string;
}
const user: User = {
id: "123",
name: "John Doe"
};
接口可以继承其他接口,以扩展其功能。
interface Named {
name: string;
}
interface Person extends Named {
age: number;
}
const person: Person = {
name: "John",
age: 30
};
通过这些不同的接口模式,可以灵活地定义和管理TypeScript中的类型,从而提高代码的可维护性和可读性。
领取专属 10元无门槛券
手把手带您无忧上云