madjardi
madjardi

Reputation: 5939

what does `(this as any)` mean in this typescript snippet?

I meet this code and do not understand exactly what it does :

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);
  }

Can anyone explain what does this (this as any) statement do?

Upvotes: 31

Views: 37654

Answers (2)

Mouneer
Mouneer

Reputation: 13489

(this as any ) is just a Type Assertion that works on dev/compiling time and has no side effects on run time because it is purely a Typescript thing. It can be useful if something related to this like this[whatever] which outputs a TS error because whatever is not defined inside the this TS type. So, this error can be suppressed with (this as any)[whatever]

Also (this as any) is the equivalent to (<any> this)

Note to mention: --suppressImplicitAnyIndexErrors as a compiler option suppresses those kind of possible errors.

Upvotes: 29

codeX
codeX

Reputation: 5418

It can be actually written as

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

The type casting is exhibited in the above statement!

Upvotes: 5

Related Questions