简体   繁体   English

在Typescript 2.0中键入一个承诺

[英]Typing a Promise in Typescript 2.0

The following compiled and worked fine in Typescript 1.8 and Angular 1. Now our development platform is moving to Typescript 2.3. 以下代码在Typescript 1.8和Angular 1中进行了编译和正常工作。现在,我们的开发平台正在迁移到Typescript 2.3。 The same function fails to compile in Typescript 2.3 at the return statement: 相同的函数无法在Typescript 2.3中的return语句中编译:

"Type 'IPromise<{}>' is not assignable to type 'IPromise'" “类型'IPromise <{}>'不能分配给类型'IPromise'”

How do you type a Promise? 您如何键入Promise? Is there a cast? 有演员表吗?

detail(id: string): ng.IPromise<IInvOrder> {
    var defer = this.$q.defer();
    this.$http.get(this.apiUrl + "/Detail/" + id)
        .success((result: IInvOrder) => defer.resolve(result))
        .error((err: any) => defer.reject(err));
    return defer.promise;
}

Fix 固定

TypeScript now forces you to use explicit generics when they cannot be inferred. 现在,TypeScript会强制您在无法推断出显式泛型时使用它们。

Example

Change var defer = this.$q.defer(); 更改var defer = this.$q.defer(); to var defer = this.$q.defer<IInvOrder(); var defer = this.$q.defer<IInvOrder();

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

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