typescript - 如何创建通用函数以从接口转换为实现类
问题描述
我有一个 Rest API,并将响应反序列化为普通的 Javascript 对象。
我有实现代表 Rest 响应的接口并具有附加功能的类。
例如
interface IUser {
FirstName: string;
LastName: string;
}
class User implements IUser {
private firstName: string;
private lastName: string;
public get FirstName(): string {
return this.firstName;
}
public set FirstName(value: string) {
this.firstName = value;
}
public get LastName(): string {
return this.lastName;
}
public set LastName(value: string) {
this.lastName = value;
}
// Extra Stuff
public get FullName(): string {
return `${this.FirstName} ${this.LastName}`
}
constructor(firstName: string, lastName: string) {
this.firstName = firstName;
this.lastName = lastName;
}
}
我想做的是在共享基类中实现一个方法,它将接口转换为实现它的类。
我尝试使用泛型类型别名,但出现错误? expected
,这对我来说没有多大意义。
我认为这抓住了我的想法的总体思路。
type extendedBy<TInterface, T> = T extends TInterface;
abstract class AbstractBaseModel {
public fillFromInterface<TInterface extends extendedBy<TInterface, this>>(iface: TInterface): this {
Object.assign(this, iface);
}
}
用户会扩展AbstractBaseModel
,理想情况下它会像这样使用
let apiUser = getUserFromApi(userId);
let user = User.fromInterface(apiUser);
打字稿中目前有什么与此类似的东西吗?还是我需要每个类实现自己的 fromInterface 方法?
解决方案
推荐阅读
- sql - 我如何使用子查询来获取这里的总价?
- django - 我的登录视图一直说“使用此电子邮件的用户已经存在”。
- phpmailer - PHPMailer:我如何在纯文本版本中保留链接?
- .net - Assembly.Load 在测试用例中失败(强命名验证也失败)......为什么?
- swift - 如何在 Swift 中将 http 转换为 https URL?
- swift - 视觉格式语言并因特征而异
- java - 实现类的实例
- mongodb - 将本地 Meteor MongoDB 导入到 DigitalOcean Ubuntu 服务器
- reactjs - 浏览器窗口中的电子高度未传播
- excel - 不连续范围内的相关excel