Відповіді:
Різниця полягає в тому, що as Circleпрацює у файлах TSX, але <Circle>конфліктує з синтаксисом JSX. asбуло введено з цієї причини.
Наприклад, наступний код у .tsxфайлі:
var circle = <Circle> createShape("circle");
Це призведе до наступної помилки:
помилка TS17002: очікуваний відповідний тег закриття JSX для "Circle".
Однак as Circleбуде працювати чудово.
Використовувати as Circleз цього моменту. Це рекомендований синтаксис.
На сторінці Wiki : "Що нового у 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;