在TypeScript中,封装一个类来解析接口响应数据是一个常见的做法,它允许你将与接口响应相关的逻辑封装在一个可复用的单元中。下面是一个示例,展示了如何定义一个TypeScript类来解析一个假设的API接口响应数据。
首先,我们定义一个接口来描述从API接收到的数据形状:
interface UserData {
id: number;
name: string;
email: string;
// 可以根据需要添加更多属性
}
然后,我们创建一个类UserResponseParser
,它接收一个符合UserData
接口的对象作为输入,并提供方法来访问或处理这些数据:
class UserResponseParser {
private userData: UserData; // 使用private来限制外部直接访问
constructor(rawData: UserData) {
if (!rawData || typeof rawData !== 'object') {
throw new Error('Invalid raw data provided to UserResponseParser');
}
this.userData = rawData;
}
// 公开一个方法来获取用户的名字
getName(): string {
return this.userData.name;
}
// 公开一个方法来获取用户的邮箱
getEmail(): string {
return this.userData.email;
}
// 可以根据需要添加更多方法
// 例如,一个方法用于获取用户的完整信息(以字符串形式)
getUserInfoAsString(): string {
return `User ID: ${this.userData.id}, Name: ${this.userData.name}, Email: ${this.userData.email}`;
}
}
// 示例用法
const rawUserData: UserData = {
id: 1,
name: 'John Doe',
email: 'john.doe@example.com'
};
try {
const userParser = new UserResponseParser(rawUserData);
console.log(userParser.getName()); // 输出: John Doe
console.log(userParser.getEmail()); // 输出: john.doe@example.com
console.log(userParser.getUserInfoAsString()); // 输出: User ID: 1, Name: John Doe, Email: john.doe@example.com
} catch (error) {
console.error('Error parsing user data:', error.message);
}
在这个例子中,UserResponseParser
类有一个私有属性userData
,它存储了从API接收到的原始数据。构造函数接受一个UserData
类型的参数,并将其存储在userData
属性中。然后,类提供了几个公开的方法来访问这些数据,如getName
和getEmail
。此外,还提供了一个getUserInfoAsString
方法来将用户的完整信息格式化为一个字符串。
通过使用TypeScript,我们得到了类型安全和自动完成等好处,这有助于减少错误并提高开发效率。同时,将逻辑封装在类中也有助于保持代码的模块化和可重用性。