¿Cómo se maneja la conversión de tipos en TypeScript o Javascript?
Digamos que tengo el siguiente código 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";
}
}
}
donde SymbolInfo
es una clase base ¿Cómo manejo la conversión de tipos de SymbolInfo
a MarkerSymbolInfo
en TypeScript o Javascript?
casting
typescript
Klaus Nji
fuente
fuente
Esto se llama aserción de tipo en TypeScript, y desde TypeScript 1.6, hay dos formas de expresar esto:
Ambas alternativas son funcionalmente idénticas . La razón para introducir la
as
sintaxis es que la sintaxis original está en conflicto con JSX , vea la discusión de diseño aquí .Si está en condiciones de elegir, simplemente use la sintaxis con la que se sienta más cómodo. Personalmente prefiero la
as
sintaxis, ya que se siente más fluido para leer y escribir.fuente
En mecanografiado es posible hacer una
instanceof
verificación en una declaración if y tendrá acceso a la misma variable con lasTyped
propiedades.Entonces, digamos que
MarkerSymbolInfo
tiene una propiedad llamadamarker
. Puedes hacer lo siguiente:Es un buen truco obtener la instancia de una variable usando la misma variable sin necesidad de reasignarla a un nombre de variable diferente.
Consulte estos dos recursos para obtener más información:
TypeScript instanceof & JavaScript instanceof
fuente