Como lidar com a conversão de tipos em TypeScript ou Javascript?
Digamos que eu tenha o seguinte 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";
}
}
}
onde SymbolInfo
é uma classe base. Como lidar com SymbolInfo
a MarkerSymbolInfo
conversão de tipos de para em TypeScript ou Javascript?
casting
typescript
Klaus Nji
fonte
fonte
Isso é chamado de asserção de tipo no TypeScript e, desde o TypeScript 1.6, existem duas maneiras de expressar isso:
Ambas as alternativas são funcionalmente idênticas . A razão para introduzir a
as
sintaxe-é que a sintaxe original entra em conflito com o JSX . Consulte a discussão sobre design aqui .Se você estiver em posição de escolher, use a sintaxe com a qual você se sentir mais confortável. Pessoalmente, prefiro a
as
sintaxe-porque parece mais fluente ler e escrever.fonte
No texto datilografado, é possível fazer uma
instanceof
verificação em uma instrução if e você terá acesso à mesma variável com asTyped
propriedades.Então, digamos que
MarkerSymbolInfo
tenha uma propriedade chamadamarker
. Você pode fazer o seguinte:É um pequeno truque agradável para obter a instância de uma variável usando a mesma variável sem precisar redesigná-la para um nome de variável diferente.
Confira estes dois recursos para obter mais informações:
TypeScript instanceof & JavaScript instanceof
fonte