TypeScript ou fonte de type JavaScript

Comment gère-t-on la saisie de caractères en TypeScript ou Javascript?

Supposons que je dispose du code TypeScript suivant:

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 est une classe de base. Comment gérer la SymbolInfo de MarkerSymbolInfo en MarkerSymbolInfo en TypeScript ou Javascript?

Vous pouvez lancer comme ceci:

 return this.createMarkerStyle( symbolInfo); 

Ou comme ceci si vous voulez être compatible avec le mode tsx:

 return this.createMarkerStyle(symbolInfo as MarkerSymbolInfo); 

Rappelez-vous simplement qu’il s’agit d’une dissortingbution au moment de la compilation, et non d’un cast à l’exécution.

Ceci est appelé assertion de type dans TypeScript, et depuis TypeScript 1.6, il y a deux manières d’exprimer ceci:

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

Les deux alternatives sont fonctionnellement identiques . La raison de l’introduction de as -syntax est que la syntaxe originale est en conflit avec JSX , voir la discussion sur la conception ici .

Si vous êtes en mesure de choisir, utilisez simplement la syntaxe avec laquelle vous vous sentez plus à l’aise. Personnellement, je préfère le as -tyntax car il semble plus facile à lire et à écrire.