TypeScript或JavaScripttypes转换
如何在TypeScript或Javascript中处理types转换?
说我有以下的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
types转换?
你可以像这样施放:
return this.createMarkerStyle(<MarkerSymbolInfo> symbolInfo);
或者像这样,如果你想与tsx模式兼容:
return this.createMarkerStyle(symbolInfo as MarkerSymbolInfo);
只要记住,这是一个编译时间转换,而不是一个运行时间转换。
这在TypeScript中被称为types断言 ,自从TypeScript 1.6以来,有两种expression方式:
// Original syntax var markerSymbolInfo = <MarkerSymbolInfo> symbolInfo; // Newer additional syntax var markerSymbolInfo = symbolInfo as MarkerSymbolInfo;
两种select在function上是相同的 。 引入as
-syntax的原因是原始语法与JSX冲突,请参阅此处的devise讨论。
如果您可以select,只需使用您感觉更舒适的语法即可。 我个人比较喜欢as
asntax,因为它读写更stream畅。