【问题标题】:Breezejs typescript promise has no fail method in definition fileBreezejs typescript promise在定义文件中没有失败方法
【发布时间】:2016-04-10 03:03:14
【问题描述】:

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

public addUser(user: IApiUser): void {
    this.dataContext.entityManager.addEntity(this.dataContext.entityManager.createEntity("ApiUserEntity", user));
}

为了将添加的实体写入 webapi,我在微风js 中的 entitymanager 上调用 saveChanges() 方法:

// Save any changes for this datacontext
return this.dataContext.entityManager.saveChanges().then((saveResult: breeze.SaveResult): breeze.SaveResult => {
    return saveResult;
});

我已经从here 下载了针对breezejs 的打字稿定义文件 ,但查看 saveChanges 签名:

 saveChanges(entities?: Entity[], saveOptions?: SaveOptions, callback?: SaveChangesSuccessCallback, errorCallback?: SaveChangesErrorCallback): breeze.promises.IPromise<SaveResult>;

它返回一个类型的承诺:

breeze.promises.IPromise<SaveResult>;

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

interface IPromise<T> {
    then<U>(onFulfill: (value: T) => U, onReject?: (reason: any) => U): IPromise<U>;
    then<U>(onFulfill: (value: T) => IPromise<U>, onReject?: (reason: any) => U): IPromise<U>;
    then<U>(onFulfill: (value: T) => U, onReject?: (reason: any) => IPromise<U>): IPromise<U>;
    then<U>(onFulfill: (value: T) => IPromise<U>, onReject?: (reason: any) => IPromise<U>): IPromise<U>;
    catch<U>(onRejected: (reason: any) => U): IPromise<U>;
    catch<U>(onRejected: (reason: any) => IPromise<U>): IPromise<U>;
    finally(finallyCallback: () => any): IPromise<T>;
}

我只是不明白他们为什么选择这样实现它。我正在使用 Q.js 库,它有一个失败和一个 .done 方法等,但如果我输入这些,我的打字稿文件将无法编译,因为界面无法识别这些方法。

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

【问题讨论】:

    标签: javascript typescript breeze q


    【解决方案1】:

    fail 只是catch 的同义词,适用于旧浏览器。 catch 适用于所有现代浏览器。 EcmaScript 6 也有原生的 promisescatch 方法。

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

    interface IPromise<T> {
        fail<U>(onRejected: (reason: any) => U): IPromise<U>;
        fail<U>(onRejected: (reason: any) => IPromise<U>): IPromise<U>;
    }
    

    此声明将是 merged 与原始 .d.ts 的声明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 2017-12-19
      相关资源
      最近更新 更多