从TypeScript界面​​返回承诺

use*_*701 5 interface typescript es6-promise

interface IPlayer {
  id: String;
  name: String;
  dob: String;
  GetName<IPlayer>(): Promise<IPlayer>;
}

class Player implements IPlayer {
    constructor(public id: String, public name: string, public dob:string) { }

    GetName<IPlayer>(): Promise<IPlayer> {
        let player: IPlayer = new Player("Hello", "World", '');

        return new Promise<IPlayer>((resolve, reject) => { 
            resolve(player);
         });
    };
}
Run Code Online (Sandbox Code Playgroud)

非常注意确定我在哪里做错了。您能否告诉我为什么我无法在此代码中创建接口的实例?

这将返回以下错误。

类型“ Player”不可分配给类型“ IPlayer”。

让播放器:IPlayer

在创建接口实例时,有人可以帮我解决这个错误吗?

Tit*_*mir 8

问题是您将声明IPlayer为的类型参数GetName。此泛型类型参数与interface没有关系IPlayer。您只需删除通用类型参数,它就会按预期工作:

interface IPlayer {
    id: String;
    name: String;
    dob: String;
    GetName(): Promise<IPlayer>;
}

class Player implements IPlayer {
    constructor(public id: String, public name: string, public dob: string) { }

    GetName(): Promise<IPlayer> {
        let player: IPlayer = new Player("Hello", "World", '');

        return new Promise<IPlayer>((resolve, reject) => {
            resolve(player);
        });
    };
}
Run Code Online (Sandbox Code Playgroud)