我遇到了这段代码,并不完全明白它的作用:
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);
}
任何人都可以解释这个(这个如何)声明的作用吗?
答案 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);
在上述陈述中展示了类型铸造!