Подтвердить что ты не робот

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

Может ли кто-нибудь объяснить, что делает этот оператор (это как любой)?

4b9b3361

Ответ 1

(как и любой другой) - это просто утверждение типа, которое работает во время разработки/компиляции и не имеет побочных эффектов во время выполнения, потому что это просто вещь Typescript. Это может быть полезно, если что-то, связанное с this например, this[whatever] выдает ошибку TS, потому whatever не определено внутри this типа TS. Таким образом, эта ошибка может быть подавлена с помощью (this as any)[whatever]

Кроме того (this as any) является эквивалентом (<any> this)

Примечание для упоминания: --suppressImplicitAnyIndexErrors как опция компилятора подавляет такие возможные ошибки.

Ответ 2

На самом деле его можно записать как

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

Типовое литье представлено в приведенном выше заявлении!