Type Assertion
TypeScript에서 Type Assertion은 개발자가 해당 타입에 대해서 이미 알고 있어서 특정 타입으로 캐스팅해서 해당 타입에서 사용할 수 있는 멤버(메서드 등)를 컴파일시 사용할 수 있게 하는 기능이다. Type Assertion은 타 언어의 캐스팅과 비슷하지만, 실제 런타임시에 데이타 타입 변환 등을 일어나지 않고, 다만 컴파일타임에 타입을 캐스팅해서 인텔리센스 등과 같은 기능을 쉽게 이용할 수 있도록 한다. Type Assertion은 크게 as 를 사용하는 방법과 <T> 를 사용하는 방법이 있는데, 둘은 동일한 효과를 나타낸다.
// as 를 사용한 Type Assertion let s: any = "Hello"; let leng: number = (s as string).length; console.log(leng); // <T> 를 사용한 Type Assertion let s2: any = "Hello"; let leng2: number = (<string>s2).length;
아래 예제에서 보면, 개발자는 getData()가 문자열을 리턴하는 것을 이미 알고 있어서, 이를 string으로 캐스팅해서 String.substring() 메서드를 호출하고 있다. VS Code에서 (data as string) 뒤에 . 을 찍으면, 문자열과 관련된 메서드들이 인텔리센스를 통해 표시된다.
let data: any = getData(); let s = (data as string).substring(2); console.log(s);