如何处理TypeScript或Javascript中的类型转换?
假设我有以下TypeScript代码:
module Symbology {
export class SymbolFactory {
createStyle( symbolInfo : SymbolInfo) : any {
if (symbolInfo == null)
{
return null;
}
if (symbolInfo.symbolShapeType === "marker") {
// how to cast to MarkerSymbolInfo
return this.createMarkerStyle((MarkerSymbolInfo) symbolInfo);
}
}
createMarkerStyle(markerSymbol : MarkerSymbolInfo ): any {
throw "createMarkerStyle not implemented";
}
}
}
其中SymbolInfo
是基类。如何在TypeScript或Javascript中处理从SymbolInfo
到MarkerSymbolInfo
的类型转换?
发布于 2012-11-03 13:53:07
可以像这样进行强制转换:
return this.createMarkerStyle(<MarkerSymbolInfo> symbolInfo);
或者,如果你想兼容tsx模式,就像这样:
return this.createMarkerStyle(symbolInfo as MarkerSymbolInfo);
请记住,这是编译时强制转换,而不是运行时强制转换。
发布于 2020-07-13 20:18:24
在typescript中,可以在if语句中执行instanceof
检查,并且可以使用Typed
属性访问相同的变量。
因此,假设MarkerSymbolInfo
有一个名为marker
的属性。您可以执行以下操作:
if (symbolInfo instanceof MarkerSymbol) {
// access .marker here
const marker = symbolInfo.marker
}
这是一个很好的小技巧,可以使用相同的变量获取变量的实例,而不需要将其重新分配给不同的变量名。
有关更多信息,请查看以下两个资源:
https://stackoverflow.com/questions/13204759
复制相似问题