해당 포스팅은 '인프런_ 타입스크립트 올인원 : Part1. 기본 문법편' 강의와 '타입스크립트 교과서', '쉽게 시작하는 타입스크립트' 책을 기반으로 학습하여 정리한 내용입니다!
추론이란?
- 타입스크립트(TypeScript 컴파일러)가 코드를 해석하여 적절한 타입을 정의하는 동작을 의미합니다.
const a = '5'; // string
const b = 5; // number
const c = true; // boolean
- 변수를 초기화하거나 함수의 파라미터에 기본값을 설정하거나 반환값을 설정했을 때 지정된 값을 기반으로 적당한 타입을 제시하고 정의해 주는 것입니다.
❗제대로 추론하고 있는데 직접 타이핑 하는 것이 더 문제가 될 수 있습니다.
✅ why?
const a: string = '5';
a는 const이고 5라는 문자열 값을 가지고 있습니다. 오로지 ‘5’라는 값만을 가질 수 있는 a를 string이라고 타이핑을 함으로써 ‘5’가 아니라 문자열이라는 타입으로 만든 것입니다.
타입은 최대한 정확하게 하는 것이 중요합니다. 이러한 작성 방식은 a의 타입을 더 부정확하게 만들게 됩니다.
‘5’라는 정확한 타입이 있는데도 문자열이라는 더 넓은, 부정확한 타입으로 만든 것이기 때문에 타입스크립트가 정확하게 추론을 했다면 그대로 사용하는 것이 좋습니다.
만약, 타입스크립트가 제대로 추론하지 못했을 경우(피해야할 any로 코드를 추론한다거나)에만 타이핑하여 사용하는 것을 추천합니다.
(사람마다 선호하고 찬성하는 방식이 다르기 때문에 참고하시면 될 것 같습니다.)
변수의 타입추론 과정
const a = 'hi'; // string
- 변수를 선언할 때 할당된 초깃값에 따라 적절한 타입이 추론됩니다.
let a;
a = 10; // any
- 변수를 선언한 이후에 값을 변경하면 타입이 해당 데이터에 맞는 타입으로 변경되지 않습니다.
- let a; 가 선언되고 나면 타입스크립트는 그 이후에 어떤 값으로 변경되는지 알 수 없기 때문입니다.
- 따라서 변수 타입은 선언하는 시점에 할당된 값을 기반으로 추론된다는 것을 알 수 있습니다.
함수의 타입 추론
function add(x: number, y: number) {
return x **+** y;
}
const result = add(1, 2); // **number**
function add(x: number, y: number) {
return x **==** y;
}
const result = add(1, 2); // **boolean**
- 함수의 파라미터 타입과 내부 로직으로 반환 타입이 자동으로 추론됩니다.
function getA(a: number) {
return a;
} // function getA(a: number): **number**
- 함수의 파라미터 타입은 함수 내부에서도 동일하게 추론됩니다.
'💻Client > typescript' 카테고리의 다른 글
[TS]TypeScript란? (사용 이유/기본 지식/기본 설치) (2) | 2023.10.29 |
---|