TypeScript 사양이 형식 어설 션을 호출하는 것과 다른 점이 있습니까?
var circle = <Circle> createShape("circle");
그리고 더 새로운 as
연산자 :
var circle = createShape("circle") as Circle;
둘 다 일반적으로 컴파일 타임 캐스팅에 사용됩니까?
답변
차이점은 as Circle
TSX 파일에서 작동하지만 <Circle>
JSX 구문과 충돌한다는 것입니다. as
이런 이유로 소개되었습니다.
예를 들어 .tsx
파일에 다음 코드가 있습니다.
var circle = <Circle> createShape("circle");
다음과 같은 오류가 발생합니다.
오류 TS17002 : ‘Circle’에 해당하는 JSX 닫기 태그가 필요합니다.
그러나 as Circle
잘 작동합니다.
as Circle
지금부터 사용하십시오 . 그것은이다 권장 구문.
답변
에서 위키 페이지 : “무슨 일이 [1.6] 타이프의 새로운”
새로운
.tsx
파일 확장자 및as
연산자TypeScript 1.6에는 새로운
.tsx
파일 확장자가 도입되었습니다 . 이 확장은 두 가지 작업을 수행합니다. TypeScript 파일 내에서 JSX를 활성화하고 새as
연산자를 캐스트하는 기본 방법으로 만듭니다 (JSX 표현식과 TypeScript 접두사 캐스트 연산자 사이의 모호성을 제거함). 예를 들면 다음과 같습니다.var x = <any> foo; // is equivalent to: var x = foo as any;