Приведение типов TypeScript или JavaScript



как можно обрабатывать приведение типов в 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 является базовым классом. Как я могу обрабатывать типизацию из SymbolInfo to MarkerSymbolInfo в TypeScript или Javascript?

573   2  

2 ответов:

вы можете бросить так:

return this.createMarkerStyle(<MarkerSymbolInfo> symbolInfo);

или вот так, если вы хотите быть совместимы с режимом tsx:

return this.createMarkerStyle(symbolInfo as MarkerSymbolInfo);

просто помните, что это приведение во время компиляции, а не во время выполнения.

Это называется утверждение типа в TypeScript, и начиная с TypeScript 1.6, есть два способа выразить это:

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

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

оба варианта функционально идентичны. Причина введения as-синтаксис заключается в том, что исходный синтаксис конфликтует с JSX см. обсуждения здесь.

Если вы находитесь в состоянии выбрать, просто используйте синтаксис, который вы чувствуете себя более комфортно. Я лично предпочитаю as-синтаксис, как он чувствует себя более свободно читать и писать.

Comments

    Ничего не найдено.