eagleye

TypeScript接口成员详解

TypeScript 中,interface(接口)用于定义对象的结构规范,其内部的各个组成部分统称为成员Members)。根据功能不同,接口的成员可以分为以下几类:

 


 

1.1. 属性成员(Property Members)

定义对象的静态属性,可以是任意类型(如 string、number、自定义类型等)。支持以下特性:

• 可选属性:通过标记,表示该属性可选(非必需)。

• 只读属性:通过 readonly 标记,表示该属性初始化后不可修改。

示例

interface User {
  readonly id: number;    // 只读属性(初始化后不可修改)
  name: string;           // 必需属性
  age?: number;           // 可选属性(可存在或不存在)
  email: string | null;   // 联合类型属性
}

 


 

2.2. 方法成员(Method Members)

定义对象的函数行为,本质是属性值为函数类型的属性。

示例

interface Logger {
  log(message: string): void;  // 方法成员(接收字符串,无返回值)
  error: (err: Error) => void; // 等价写法(属性值为函数类型)
}

 


 

3.3. 索引签名(Index Signature)

定义对象的动态键值对结构,用于描述通过索引(如 obj[key])访问对象的类型规则。

示例

interface StringMap {
  [key: string]: string;  // 索引签名:所有键为 string 类型,值为 string 类型
}

// 合法对象
const map: StringMap = { a: "1", b: "2" };

// 非法对象(值类型不匹配)
const invalidMap: StringMap = { a: 1 }; // 报错:类型 "number" 不可赋值给类型 "string"

 


 

4.4. 继承成员(Inherited Members)

通过 extends 关键字继承其他接口的成员,继承后的接口会包含父接口的所有成员。

示例

interface Shape {
  color: string;
}

interface Square extends Shape {  // 继承 Shape 的 color 属性
  sideLength: number;
}

// Square 接口的成员包括:color(来自 Shape)和 sideLength
const square: Square = { color: "red", sideLength: 10 };

 


 

5.总结

TypeScript 接口中的成员(Members)是对对象结构的具体定义,包括属性(静态数据)、方法(函数行为)、索引签名(动态键值对)等类型。这些成员共同约束了对象的形态,确保代码的类型安全。

posted on 2025-06-19 09:33  GoGrid  阅读(21)  评论(0)    收藏  举报

导航