繁体   English   中英

如何使泛型类型约束变得不可思议

[英]How to make a generic type constraint instanciable

我有这两个代码片段,如何更改它们,以便MemberModel可以作为泛型类型传递并保持可实例化,以便可以将follow方法提取到其自己的导出函数中?

export interface IFollowable {
    follow(user: IUserModel): IMemberModel;
}

export class CardModel implements ICardModel, IFollowable {
    public follow(user: IUserModel): IMemberModel {
        let member = new MemberModel({userId: user.id});
        member.role = UserRoles.follower;
        this.members.push(member);
        return member;
    }
}

我该如何进行关注和IFollowable泛型,以便我传递的任何类型都像MemberModel这样保持可更新状态?

这样我传递的任何类型都可以像MemberModel一样保持新状态

由于打字稿泛型在编译时会被删除,因此您需要显式传递它们,例如使用如下所示的工厂:

type User = {name:string};
type Member = {name: string};
type MemberCreator = {new (user:User): Member};

interface Followable {
    follow(user: User, memberCreator: MemberCreator): Member;
}

export class CardModel implements Followable {
    public follow(user: User, memberCreator: MemberCreator): Member {
       return new memberCreator(user);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM