TS2409:构造函数签名的返回类型必须可分配给类的实例类型

时间:2014-10-06 09:22:03

标签: angularjs typescript

我在typeScript + angular中遇到问题,这里的类foo是一个服务,它使用另一个服务作为fooService而fooServie.getUser()正在返回某种类型的承诺

编译很好,但是这种类型错误:TS2409:构造函数签名的返回类型必须可赋值给类的实例类型

请帮我解决问题

module fooModule {

    export class foo {

        static $inject = ['fooService'];

        constructor(public fooService:services.fooService) {

            return fooService.getUser();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

  

编译很好,但是这种类型错误:TS2409:构造函数签名的返回类型必须可赋值给类的实例类型

错误很明显。构造函数return fooService.getUser();的return语句应该给出类class foo的实例。例如

declare class FooService{
    getfoo():foo;
}

class foo {

    constructor(public fooService:FooService) {
        return fooService.getfoo();
    }
}

否则在var f = new foo中,变量f不属于foo类型。

更新

我不确定你的意图是什么,但希望这会引导你更多:

module fooModule {

    export class Foo {

        static $inject = ['fooService'];

        constructor(public fooService:services.FooService) {
        }

        getUser():ng.IPromise<User>{
            return this.fooService.getUser();
        }
    }

    var foo = new Foo(); 
    foo.getUser().then(()=>{
        // complete this code here 
    });
}