[casting] TypeScript에서 형식 어설 션과 최신 ‘as’연산자의 차이점은 무엇입니까?

TypeScript 사양이 형식 어설 션을 호출하는 것과 다른 점이 있습니까?

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

그리고 더 새로운 as 연산자 :

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

둘 다 일반적으로 컴파일 타임 캐스팅에 사용됩니까?



답변

차이점은 as CircleTSX 파일에서 작동하지만 <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;

답변