// 定义User接口
interface User {
name: string;
age: number;
email: string;
}
// 创建printUser函数
function printUser(user: User) {
console.log(`Name: ${user.name}, Age: ${user.age}, Email: ${user.email}`);
}
// 示例使用
const myUser: User = {
name: "John Doe",
age: 30,
email: "johndoe@example.com"
};
printUser(myUser);
TypeScript接口类型检查机制:
- 结构类型系统:TypeScript采用结构类型系统,接口的类型检查关注对象的结构而非声明的类型名称。只要对象具有接口中定义的属性,且属性类型匹配,就认为该对象符合接口类型。例如,即使两个对象来自不同的类,只要它们的结构与接口匹配,就都可以赋值给该接口类型的变量。
- 属性检查:接口定义了一组属性及其类型,TypeScript在编译时会检查传递给函数或赋值给接口类型变量的对象是否包含接口中定义的所有属性,并且这些属性的类型是否与接口中定义的类型一致。如果缺少某个属性或属性类型不匹配,就会报类型错误。
- 可选属性和只读属性:接口可以定义可选属性(属性名后加
?
)和只读属性(属性名前加readonly
)。可选属性在对象中可以不存在,只读属性一旦初始化就不能再被重新赋值,TypeScript同样会对这些特殊属性进行相应的类型检查。