<aside> 💡 타입 추론에서 발생할 수 있는 몇 가지 문제와 그 해법을 알아보자.
[ 알 수 있는 것 ]
</aside>
타입 추론이 된다면 명시적 타입 구문은 필요하지 않음.
가독성을 해치고 추후 정의한 타입을 변경할 때 자동으로 추론된 타입은 역시나 자동으로 타입을 입력하지만 하드하게 적어주면 오류를 내어 다시 하드하게 바꿔줘야 하기 때문.
비구조화 할당문은 모든 지역 변수의 타입이 추론되도록 함.
일반적으로 함수의 매개 변수는 타입 추론이 되지 않지만 기본 값이 있을 경우엔 타입 추론이 되기 때문에 추가로 타입을 지정해줄 필요가 없음.
타입 정보가 있는 라이브러리에서, 콜백 함수의 매개변수 타입은 자동으로 추론됨.
// Don't do this:
app.get('/health', (request: express.Request, response: express.Response) => {
response.send('OK');
});
// Do this:
app.get('/health', (request, response) => {
response.send('OK');
});
그럼에도 불구하고 타입을 명시하고 싶은 경우
eslint 규칙 중 no-inferrable-types
를 사용해 작성된 모든 타입이 정말 필요한지 확인할 수 있음.
유니온 타입으로 범위 확장하기 ex) string | number 이 방법은 앞으로의 더 많은 문제를 일으킬 수 있음.
다른 타입에는 다른 변수 사용하기 scope가 달라 같은 변수명이어도 shadowed 변수라면 다른 변수를 사용하지 않아도 됨.
const id = "12-34-56"; fetchProduct(id);
{
const id = 123456; // OK
fetchProductBySerialNumber(id); // OK
}
넓히기
라고 함.