簡體   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