Есть ли разница между утверждениями типа и новым оператором `as` в TypeScript?

Есть ли разница между тем, что спецификация TypeScript называет утверждением типа:

var circle = <Circle> createShape("circle");

И > as:

var circle = createShape("circle") as Circle;

Оба из них обычно используются для приведения во время компиляции?

74 голоса | спросил mk. 3 22015vEurope/Moscow11bEurope/MoscowTue, 03 Nov 2015 18:35:16 +0300 2015, 18:35:16

2 ответа


0

Разница в том, что as Circle работает в файлах TSX, но <Circle> конфликтует с синтаксисом JSX. По этой причине было введено as.

Например, следующий код в файле .tsx:

var circle = <Circle> createShape("circle");

приведет к следующей ошибке:

  

ошибка TS17002: ожидается соответствующий закрывающий тег JSX для круга.

Однако as Circle будет работать просто отлично.

С этого момента используйте as Circle. Это рекомендуется Синтаксис.

ответил David Sherret 3 22015vEurope/Moscow11bEurope/MoscowTue, 03 Nov 2015 19:10:50 +0300 2015, 19:10:50
0

От Вики-страница : «Что нового в TypeScript [1.6]»:

  

Новое .tsx расширение файла и as оператор

     

TypeScript 1.6 представляет новое расширение файла .tsx. Это расширение   делает две вещи: он включает JSX внутри файлов TypeScript и   делает новый оператор as способом приведения по умолчанию (удаление любых   неоднозначность между выражениями JSX и приведением префикса TypeScript   оператор). Например:

var x = <any> foo; 
// is equivalent to:
var x = foo as any;
ответил Martin Vseticka 3 22015vEurope/Moscow11bEurope/MoscowTue, 03 Nov 2015 22:49:49 +0300 2015, 22:49:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132