Javascript Breezejs typescript promise在定义文件中没有失败方法

Javascript Breezejs typescript promise在定义文件中没有失败方法,javascript,typescript,breeze,q,Javascript,Typescript,Breeze,Q,我正在做一个项目,我使用breezejs与我的webapi对话。 我已经设置了一个简单的注册表单,可以用它注册新用户: public addUser(用户:IApiUser):无效{ this.dataContext.entityManager.addEntity(this.dataContext.entityManager.createEntity(“ApiUserEntity”,user)); } 要将添加的实体写入webapi,我将在breezejs中的entitymanager上调用s

我正在做一个项目,我使用breezejs与我的webapi对话。 我已经设置了一个简单的注册表单,可以用它注册新用户:

public addUser(用户:IApiUser):无效{
this.dataContext.entityManager.addEntity(this.dataContext.entityManager.createEntity(“ApiUserEntity”,user));
}
要将添加的实体写入webapi,我将在breezejs中的entitymanager上调用saveChanges()方法:

//保存对此datacontext的任何更改
返回此.dataContext.entityManager.saveChanges()。然后((saveResult:breeze.saveResult):breeze.saveResult=>{
返回保存结果;
});
我已经从下载了breezejs的typescript定义文件 ,但查看saveChanges签名:

saveChanges(实体?:实体[],saveOptions?:saveOptions,回调?:savechangesccesscallback,errorCallback?:SaveChangesErrorCallback):breeze.promises.IPromise;
它返回类型为的承诺:

breeze.promises.IPromise;
现在,当我检查定义文件中的IPromise时,我得到以下界面:

接口IPromise{
然后(onFulfill:(值:T)=>U,onReject?:(原因:any)=>U):i推荐;
然后(onFulfill:(值:T)=>IPromise,onReject?:(原因:any)=>U):IPromise;
然后(onFulfill:(值:T)=>U,onReject?:(原因:any)=>IPromise):IPromise;
然后(onFulfill:(值:T)=>IPromise,onReject?:(原因:any)=>IPromise):IPromise;
捕获(onRejected:(原因:任意)=>U):i放弃;
catch(onRejected:(原因:any)=>IPromise:IPromise;
最后(最终回调:()=>any):IPromise;
}
我只是不明白他们为什么选择这样实施。我使用的是Q.js库,它有一个fail和一个.done方法等,但是如果我键入这些,我的typescript文件将无法编译,因为接口无法识别这些方法


我已经用Q.js查找了breeze的特定定义文件,但它们似乎不存在。当然,我可以编辑定义文件,但我想知道这样设置的原因。

fail
只是在旧浏览器中工作的
catch
的同义词
catch
适用于所有现代浏览器。另外,EcmaScript 6具有本机with
catch
方法

您可以在代码中的某个位置声明缺少的方法:

interface IPromise<T> {
    fail<U>(onRejected: (reason: any) => U): IPromise<U>;
    fail<U>(onRejected: (reason: any) => IPromise<U>): IPromise<U>;
}
接口IPromise{
失败(onRejected:(原因:任意)=>U):i放弃;
失败(onRejected:(原因:任意)=>IPromise):IPromise;
}

此声明将与原始
.d.ts

fail
只是在旧浏览器中工作的
catch
的同义词
catch
适用于所有现代浏览器。另外,EcmaScript 6具有本机with
catch
方法

您可以在代码中的某个位置声明缺少的方法:

interface IPromise<T> {
    fail<U>(onRejected: (reason: any) => U): IPromise<U>;
    fail<U>(onRejected: (reason: any) => IPromise<U>): IPromise<U>;
}
接口IPromise{
失败(onRejected:(原因:任意)=>U):i放弃;
失败(onRejected:(原因:任意)=>IPromise):IPromise;
}

此声明将与原始
.d.ts

fail
只是在旧浏览器中工作的
catch
的同义词
catch
适用于所有现代浏览器。另外,EcmaScript 6具有本机with
catch
方法

您可以在代码中的某个位置声明缺少的方法:

interface IPromise<T> {
    fail<U>(onRejected: (reason: any) => U): IPromise<U>;
    fail<U>(onRejected: (reason: any) => IPromise<U>): IPromise<U>;
}
接口IPromise{
失败(onRejected:(原因:任意)=>U):i放弃;
失败(onRejected:(原因:任意)=>IPromise):IPromise;
}

此声明将与原始
.d.ts

fail
只是在旧浏览器中工作的
catch
的同义词
catch
适用于所有现代浏览器。另外,EcmaScript 6具有本机with
catch
方法

您可以在代码中的某个位置声明缺少的方法:

interface IPromise<T> {
    fail<U>(onRejected: (reason: any) => U): IPromise<U>;
    fail<U>(onRejected: (reason: any) => IPromise<U>): IPromise<U>;
}
接口IPromise{
失败(onRejected:(原因:任意)=>U):i放弃;
失败(onRejected:(原因:任意)=>IPromise):IPromise;
}
此声明将与原始
.d.ts
中的声明一起使用