Kla*_*Nji 154 casting typescript
如何在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";
}
}
}
Run Code Online (Sandbox Code Playgroud)
哪里SymbolInfo是基类.如何从处理类型转换SymbolInfo到MarkerSymbolInfo以打字稿或Javascript?
blo*_*ish 250
你可以这样投:
return this.createMarkerStyle(<MarkerSymbolInfo> symbolInfo);
Run Code Online (Sandbox Code Playgroud)
或者像这样,如果你想与tsx模式兼容:
return this.createMarkerStyle(symbolInfo as MarkerSymbolInfo);
Run Code Online (Sandbox Code Playgroud)
请记住,这是一个编译时强制转换,而不是运行时强制转换.
Ale*_*lex 140
这在TypeScript中称为类型断言,从TypeScript 1.6开始,有两种表达方式:
// Original syntax
var markerSymbolInfo = <MarkerSymbolInfo> symbolInfo;
// Newer additional syntax
var markerSymbolInfo = symbolInfo as MarkerSymbolInfo;
Run Code Online (Sandbox Code Playgroud)
两种选择在功能上都是相同的.引入as-syntax 的原因是原始语法与JSX冲突,请参见此处的设计讨论.
如果您可以选择,只需使用您感觉更舒服的语法.我个人更喜欢as-syntax,因为它更易于阅读和书写.
| 归档时间: |
|
| 查看次数: |
189246 次 |
| 最近记录: |