javascript - hva betyr ` (this as any)` i dette typescript-utdraget?


Jeg møter denne koden og forstår ikke helt hva den gjør :

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

Kan noen forklare hva denne (this as any) uttalelsen gjør?

Svar #1

(this as any) er bare en Typepåstand som fungerer under utvikling/kompilering og har ingen bivirkninger under kjøring fordi det er helt og holdent en Typescript-greie. Det kan være nyttig hvis noe relatert til this som this[whatever] gir en TS-feil fordi whatever ikke er definert inne i this TS-typen. Så denne feilen kan undertrykkes med (this as any)[whatever]

Også (this as any) tilsvarer (<any> this)

Merk å nevne: --suppressImplicitAnyIndexErrors som en kompilatoropsjon undertrykker den typen mulige feil.

Svar #2

Det kan faktisk skrives som

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

Typekonverteringen vises i setningen ovenfor!

Relaterte artikler