打字稿。是什么意思:(这和任何一样)

时间:2017-03-02 09:37:38

标签: javascript typescript

我遇到了这段代码,并不完全明白它的作用:

public uploadItem(value:FileItem):void {
    let index = this.getIndexOfItem(value);
    let item = this.queue[index];
    let transport = this.options.isHTML5 ? '_xhrTransport' : '_iframeTransport';
    item._prepareToUploading();
    if (this.isUploading) {
      return;
    }
    this.isUploading = true;
    (this as any)[transport](item);
  }

任何人都可以解释这个(这个如何)声明的作用吗?

2 个答案:

答案 0 :(得分:11)

(这与任何一样)只是 Type Assertion ,适用于开发/编译时间,对运行时没有任何副作用,因为它纯粹是打字稿的东西。如果与this相关的某些内容(例如this[whatever]输出TS错误,因为whatever未在this TS类型中定义,则会很有用。因此,可以使用(this as any)[whatever]

来抑制此错误

(this as any)相当于(<any> this)

请注意: --suppressImplicitAnyIndexErrors作为compiler option可以解决这些可能的错误。

答案 1 :(得分:4)

它实际上可以写成

 (<any>this)[transport](item);

在上述陈述中展示了类型铸造!