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)是对对象结构的具体定义,包括属性(静态数据)、方法(函数行为)、索引签名(动态键值对)等类型。这些成员共同约束了对象的形态,确保代码的类型安全。
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号