相关疑难解决方法(0)

如何在TypeScript中扩展宿主对象(例如,错误)

我想将宿主对象扩展Error为自定义UploadError类.编译时,以下示例失败:

class UploadError extends Error {
    constructor(message: string, private code: number) {
        super(message);
    }

    getCode(): number {
        return this.code;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行TypeScript编译器时,tsc我收到以下错误:

UploadError.ts(1,0): A export class may only extend other classes, Error is an interface.
Run Code Online (Sandbox Code Playgroud)

它似乎Error被定义为一个接口.如果有人知道实现的名称是什么,它会让我很开心:-)

更新:我想使用Typescripts继承而非原型继承,就像我目前用来解决这个问题:

function UploadError (message: string, code: number) {
    this.message = message;
    this.code = code;
}

UploadError.prototype = new Error();

UploadError.prototype.constructor = UploadError;

UploadError.prototype.getCode = (): number => {
    return this.code;
}
Run Code Online (Sandbox Code Playgroud)

inheritance typescript

39
推荐指数
5
解决办法
2万
查看次数

在Ionic应用程序中处理Toast通知的正确方法

我有一个Ionic 2应用程序,在各个地方都有吐司通知.

一个很好的例子是用户在应用程序上更新他们的个人资料并运行一些验证检查.如果用户未通过某些验证,我可能会调用以下内容:

      let toast = this.toastCtrl.create({
        message: 'Sorry, your password must be at least 6 characters long.  Your account was not updated.',
        duration: 3000,
        position: 'top'
      });
      toast.present();
Run Code Online (Sandbox Code Playgroud)

没有问题.它只显示3秒然后消失.

当多次同时显示时出现问题.例如,用户可以键入6个字符的密码,但不会因其他原因进行验证,因此会引发另一个Toast通知:

    let toast = this.toastCtrl.create({
      message: 'Sorry, your passwords do not match.  Your account was not updated.',
      duration: 3000,
      position: 'top'
    });
    toast.present();
Run Code Online (Sandbox Code Playgroud)

这导致2个吐司重叠,一个将永久保留.这两个重叠不是一个问题,但一个无限期的事实是一个巨大的问题.

我想这是因为我toast每次都有效地覆盖变量.

解决这个问题的最佳方法是什么?我不希望有toast1,toast2等等,因为这不会解决问题,因为用户可能会推出同样Toast通知两次(<6个字符的密码,提交两次).

toast ionic-framework ionic2

3
推荐指数
1
解决办法
3700
查看次数

标签 统计

inheritance ×1

ionic-framework ×1

ionic2 ×1

toast ×1

typescript ×1