在 TypeScript 中,接口(interface
)可以描述几种不同类型的属性和结构。以下是你可以在接口中定义的一些常见属性和结构:
-
属性签名 - 描述对象属性的名称和类型。
interface Person { name: string; age: number; }
-
方法签名 - 描述函数或方法的参数列表和返回类型。
interface Greeter { greet(message: string): void; }
-
索引签名 - 允许你定义使用数字索引(类似数组)或字符串索引(类似对象字典)的类型。
interface StringArray { [index: number]: string; } interface Dictionary { [key: string]: any; }
-
构造签名 - 描述一个构造函数,它可以被实现为类的构造函数。
interface ClockConstructor { new (hour: number, minute: number): ClockInterface; } interface ClockInterface { tick(): void; }
-
可调用签名 - 描述一个可以被调用的函数类型。
interface SearchFunc { (source: string, subString: string): boolean; }
-
可索引类型 - 描述能够“通过索引得到”的类型,比如可以通过数字索引访问的数组或通过字符串索引访问的对象。
interface StringArray { [index: number]: string; }
-
继承和实现 - 接口可以继承多个接口,类可以实现一个或多个接口。
interface Shape { color: string; } interface Square extends Shape { sideLength: number; } class MySquare implements Square { color: string; sideLength: number; }
-
混合类型 - 可以描述具有多种类型的对象,例如,一个对象可以同时作为函数和对象使用,并拥有额外的属性。
interface Counter { (start: number): string; interval: number; reset(): void; }
-
泛型参数 - 接口可以带有泛型参数,使得接口更加灵活和可重用。
interface ResponseData<T> { data: T; status: number; }
-
只读属性 - 描述不可修改的属性。
interface Point { readonly x: number; readonly y: number; }
-
可选属性 - 对象中可能存在或不存在的属性。
interface Options { width?: number; height?: number; }
这些是 TypeScript 接口中可以使用的一些属性和结构。接口是 TypeScript 中定义复杂类型的强大工具,可以帮助你创建清晰和可维护的代码。