Comment gère-t-on le cast de type dans TypeScript ou Javascript?
Disons que j'ai le 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";
}
}
}
où SymbolInfo
est une classe de base. Comment gérer le transtypage de SymbolInfo
vers MarkerSymbolInfo
dans TypeScript ou Javascript?
casting
typescript
Klaus Nji
la source
la source
C'est ce qu'on appelle l' assertion de type dans TypeScript, et depuis TypeScript 1.6, il existe deux façons d'exprimer cela:
Les deux alternatives sont fonctionnellement identiques . La raison de l'introduction de
as
-syntax est que la syntaxe d'origine est en conflit avec JSX , voir la discussion de conception ici .Si vous êtes en mesure de choisir, utilisez simplement la syntaxe avec laquelle vous vous sentez plus à l'aise.
as
Personnellement, je préfère la syntaxe -syntax car elle me semble plus fluide à lire et à écrire.la source
En dactylographié, il est possible de faire une
instanceof
vérification dans une instruction if et vous aurez accès à la même variable avec leTyped
propriétés.Alors disons qu'il
MarkerSymbolInfo
a une propriété appeléemarker
. Vous pouvez faire ce qui suit:C'est une petite astuce intéressante pour obtenir l'instance d'une variable en utilisant la même variable sans avoir besoin de la réaffecter à un nom de variable différent.
Consultez ces deux ressources pour plus d'informations:
Instance TypeScript et instance JavaScript
la source