Как можно обрабатывать приведение типов в 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
в MarkerSymbolInfo
в TypeScript или Javascript?
casting
typescript
Клаус Нджи
источник
источник
Это называется утверждением типа в TypeScript, и, начиная с TypeScript 1.6, есть два способа выразить это:
Обе альтернативы функционально идентичны . Причиной введения
as
-syntax является то, что исходный синтаксис конфликтовал с JSX , см. Обсуждение проекта здесь .Если вы можете выбирать, просто используйте синтаксис, который вам удобнее. Я лично предпочитаю
as
синтаксис -syntax, так как он более свободно читает и пишет.источник
В машинописном тексте можно выполнить
instanceof
проверку в операторе if, и у вас будет доступ к той же переменной соTyped
свойствами.Так скажем,
MarkerSymbolInfo
есть свойство на это называетсяmarker
. Вы можете сделать следующее:Это хороший маленький трюк, чтобы получить экземпляр переменной, используя ту же самую переменную, без необходимости переназначать его на другое имя переменной.
Проверьте эти два ресурса для получения дополнительной информации:
TypeScript instanceof и JavaScript instanceof
источник