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!
