타입 추론이란 명시적인 타입 표기가 없을때 타입을 자동으로 결정하고 코드를 해석하는 것이다.
대표적으로 자바스크립트가 있다.
타입을 자동으로 결정하기 때문에 타입에 대하여 많이 신경쓰지 않아도 코드를 작성할 수 있다.
처음 프로그래밍을 입문하기에는 타입이 없는것이 굉장히 편하다.
나 또한 자바스크립트로 개발을 처음 시작하였고 타입을 신경 안쓰는 것이 매우 좋았다.
let a = "111";
console.log(typeof a); // string
a = a * 1;
console.log(typeof a); // number
console.log(a); // 111
string으로 만들었던 변수 a를 1을 곱해서 number로 바꾸어 활용하기도 했다.
이때까진 타입을 쓰는 언어를 한번도 다루지 않았기 때문에 타입의 필요성을 느끼지 못했다.
근데 자바를 공부하면서 생각이 바뀌게 되었다. (물론 자바도 타입추론이 있긴 하다.)
처음엔 낯설고 많이 불편했지만 타입을 쓰면서 좋았던 점은 가독성과 자동완성 기능이었다.
1. 가독성
타입을 명시해줘서 코드만 보더라도 이런식으로 작동하고 얘는 이런 기능을 하는거구나 라는걸 추론할 수 있었다.
public List<Admin> getAdminData(){
reutrn ~~~~;
}
이 코드를 보면 이름과 타입만 보더라도 Admin이 담긴 List가 반환되는구나를 추론할 수 있다.
하지만 자바스크립트는 console.log로 값을 다 찍어보며 이런 값이구나라는걸 알았다.
function getAdminData(){
return ~~~;
}
데이터가 배열인지 어떻게 return되는지 바로 알수 없기때문에 console.log로 찍어보고 알 수 있다.
2. IDE 자동완성
자바스크립트는 타입을 따로 지정해주지 않기 때문에 매개변수로 받은 값으로 코드를 작성할 때 자동완성 기능이 없다.
매개변수로 받은 값의 타입을 모르기 때문에 가지고 있는 메소드를 보여주지 못하는 것이다.
/**
*
* @param {string} endpoint
* @param {function} onSuccess
* @param {function } onError
*
*/
function useQueryData(endpoint, onSuccess, onError) {}
이런식으로 타입을 지정해주고 매개변수의 타입을 정할 수 있지만 모든 함수에 이걸 쓸빠엔 타입있는 언어를 쓰는게 낫겠다라는 생각을 했다.
어짜피 타입을 명시해줘도 안지키는 경우에 오류를 뱉는게 아니라 실행이 잘된다.
/**
* @type { function(number, number): number }
*/
const plus = (a, b) => a + b;
console.log(plus("하이", "둘")); // 하이둘
이런식으로 타입을 정해줘도 이 함수를 사용하는 사람이 안지키면 그만이다.
결론
타입이 있는 언어를 쓰다보니 어느 순간 타입이 있어야 마음이 편해졌다.
그래서 나중에 타입스크립트도 공부해보고 싶어졌다.
왜 많은 개발자들이 자바스크립트를 싫어하는지 알 것 같다.
참고
'개발 > 정리' 카테고리의 다른 글
[Flutter] 안드로이드 스튜디오에서 자바버전 다르게 인식 (0) | 2024.11.19 |
---|---|
신입 개발자가 7일 동안 출시할 프로젝트의 PM 맡은 썰 (0) | 2024.02.09 |
[정리] REST API 규칙 (0) | 2023.05.23 |
[정리] URI vs URL (0) | 2023.05.22 |
[정리] REST API (0) | 2023.05.21 |