254

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

4

3 に答える 3

217

これはTypeScript では型アサーションと呼ばれ、TypeScript 1.6 以降、これを表現する方法が 2 つあります。

// Original syntax
var markerSymbolInfo = <MarkerSymbolInfo> symbolInfo;

// Newer additional syntax
var markerSymbolInfo = symbolInfo as MarkerSymbolInfo;

どちらの方法も機能的には同じです。-syntaxを導入する理由は、元の構文がJSXasと競合するためです。ここでの設計に関する議論を参照してください。

選択できる立場にある場合は、より快適に感じる構文を使用してください。as読み書きがより流暢に感じられるので、個人的には -syntax を好みます。

于 2016-02-12T12:10:54.627 に答える