타입스크립트에서 타입을 명시하지 않아도 타입을 지정할 수 있다. 이를 타입 추론이라 한다.
다음 코드를 보자.
코드를 보면 변수 a에 숫자 10이라는 값을 할당했다. 또한, a에는 타입을 지정하지 않았다.
하지만, 이후 a에 문자열 값인 "hello"를 할당하려 하자 에러가 발생했다.
a에 숫자 10을 할당하면서 타입 추론에 의해 변수 a의 타입은 number로 결정된 것이다.
객체의 타입 추론
객체에서도 타입 추론은 동일하다.
함수에서의 타입 추론
함수 역시 마찬가지다.
매개변수에서의 타입
다만, 매개변수에서는 타입을 지정해줘야 한다.
위와 같은 경고문을 없애기 위해서는 타입을 명시하거나, 초기값을 할당하여 타입 추론을 해주는 방법이 있다.
any 타입 추론
Any 타입은 역시 굉장히 특수한 타입이다. 다음 코드를 보자.
변수 d를 선언했다. 또한, 타입을 지정하지도 않았고, 어떠한 값도 할당하지 않자 변수 d는 any 타입이 되었다.
이렇게 any 타입이 된 변수 d에 숫자 10을 할당해도 any 타입이 유지된다.
하지만, 숫자에 사용할 수 있는 toFixed() 메서드를 적용하자 변수 d는 number 타입으로 변화하였다.
그리고 문자열에서 사용 가능한 toUpperCase()라는 메서드도 사용이 불가능하다.
하지만 d에는 여전히 문자열 값을 할당할 수 있다.(any 타입이니까)
문자열 값을 할당한 이후에는 toUpperCase()라는 문자열에 사용되는 메서드를 사용할 수 있었고, 반대로 toFixed() 메서드의 사용은 불가능 하게 되었다.
타입 리터럴 추론
타입스크립트가 가진 타입에는 number, string, boolean 등등의 타입도 있었지만 타입 리터럴도 존재했다. 타입 추론을 통해 타입 리터럴을 정의할 수는 없을까?
일단 정답은 가능하다. const를 이용하면 된다.
const는 상수이므로 어차피 값의 변경이 불가능하기에 타입 추론에서도 타입 리터럴로 추론하는 것을 확인할 수 있다.
참고자료
한 입 크기로 잘라먹는 타입스크립트(TypeScript)
한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런
이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻♀️로 만들어드립니다., 프론
www.inflearn.com
'언어 > TypeScript' 카테고리의 다른 글
타입 좁히기 (0) | 2024.08.20 |
---|---|
타입 단언 (0) | 2024.08.15 |
대수 타입 (0) | 2024.08.13 |
객체 타입의 호환성 (0) | 2024.08.13 |
타입의 계층 (0) | 2024.08.12 |