[정리] 타입에 대한 생각

2023. 7. 4. 11:23·개발/정리
728x90
반응형

타입 추론이란 명시적인 타입 표기가 없을때 타입을 자동으로 결정하고 코드를 해석하는 것이다.

 

대표적으로 자바스크립트가 있다.

타입을 자동으로 결정하기 때문에 타입에 대하여 많이 신경쓰지 않아도 코드를 작성할 수 있다.

처음 프로그래밍을 입문하기에는 타입이 없는것이 굉장히 편하다.

나 또한 자바스크립트로 개발을 처음 시작하였고 타입을 신경 안쓰는 것이 매우 좋았다.

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("하이", "둘")); // 하이둘

이런식으로 타입을 정해줘도 이 함수를 사용하는 사람이 안지키면 그만이다.

 

결론

타입이 있는 언어를 쓰다보니 어느 순간 타입이 있어야 마음이 편해졌다.

그래서 나중에 타입스크립트도 공부해보고 싶어졌다.

왜 많은 개발자들이 자바스크립트를 싫어하는지 알 것 같다.

 

 

참고

 

[언그래머] 일곱번째 아티클_타입 추론

안녕하세요, 송아지할때 송아 김송아입니다. 요즘 하루 걸러 하루 수준으로, 프로그래밍 언어가 업데이트 되고... 새로운 언어가 나오고... 왜인데.. 점점 더 빨라지고 있는 것 같아요.. 😇 기분

songacoding.tistory.com

 

728x90
반응형

'개발 > 정리' 카테고리의 다른 글

[Flutter] 안드로이드 스튜디오에서 자바버전 다르게 인식  (1) 2024.11.19
[정리] REST API 규칙  (0) 2023.05.23
[정리] URI vs URL  (0) 2023.05.22
[정리] REST API  (0) 2023.05.21
[정리] Http Method 정리  (0) 2023.05.19
'개발/정리' 카테고리의 다른 글
  • [Flutter] 안드로이드 스튜디오에서 자바버전 다르게 인식
  • [정리] REST API 규칙
  • [정리] URI vs URL
  • [정리] REST API
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CSS
    nodejs
    go
    erc20
    js
    go언어
    프로그래머스
    30일 챌린지
    도커
    블록체인
    하이퍼레저
    html
    mysql
    ERC721
    명령어
    컨테이너
    30일챌린지
    node.js
    React
    node
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[정리] 타입에 대한 생각
상단으로

티스토리툴바