개발자

Typescript에서 자동으로 타입추론을 해줄 때 굳이 타입을 선언하는게 좋은 것일까요?

2023년 05월 18일조회 317

안녕하세요~~ 궁금한게 있는데, 타입스크립트에서 useState의 타입이나 함수 반환값 같은 것들의 타입을 반드시 선언해 주는 것이 좋을까요? 어디서 타입 선언은 불필요한 경우에 작성하는것을 지양하라고 들었던거 같아서요 ~~ 여러분의 생각이 궁금합니당

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 4

인기 답변

엄홍재님의 프로필 사진

Typescript를 사용하다 보면 타입추론을 해줘서 굳이 할 필요 없지 않나 라고 생각할 수 있지만 가독성에서 확실히 보기 편하다는 장점이 있는 것 같습니다. 사용하는 함수나 state의 타입이 뭔지 바로 알 수 있으니까요. 그리고 강동희 님이 말씀해주신 것처럼 return 타입을 바로 알 수 있다는 장점도 있어서 보기 좋은 것 같아요. const [test, setTest] = useState<number>(1) 같이 명확한 것들은 가독성에 크게 영향을 주지 않지만 const [test, setTest] = useState(value) 처럼 위에서 정의한 다른 값을 state로 넣게되면 자동으로 type을 추론해주지만 해당 state의 타입을 눈으로 바로 알기는 어렵습니다. (코드 첨부) 두 번째는 type이 여러가지로 올 수 있는 가능성이 있는경우 자동타입추론을 믿지않고 명확하게 써주려고 합니다. const [test, setTest] = useState<number | string>(1)

1
2
3
4
5
6
7
type TestType = {} // 내가 정의한 타입

const value: TestType = {}
// 중간에 코드가 많음
const [test, setTest] = useState(value)  // 이 경우 test의 타입은 자동으로 TestType으로 추론 되지만 바로 알기는 힘듦

const [test, setTest] = useState<TestType>(value) // 이렇게 정의 하면 해당 줄만 보아도 state의 타입을 알 수 있음

인기 답변

이국범님의 프로필 사진

논쟁하기 딱 좋은 주제이군요. 함수 리턴 타입과 관련해서 이야기 해 볼까요 보리스 체르니가 쓴 "타입스크립트 프로그래밍"이라는 책에 다음과 같은 구절이 있습니다 -> 이 책에서는 여러분이 함수의 기능을 쉽게 이해할 수 있도록 반환 타입을 명시한다. 하지만 실무에서는 타입스크립트가 반환 타입을 추론하도록 하는 게 보통이다. 타입스크립트가 해줄 수 있는 일을 개발자가 직접 할 필요가 없기 때문이다 이 책 저자는 meta 소속의 Engineering leader급 개발자입니다. 커리어로 트집잡힐 사람은 아니죠 반면 Mike North라는 개발자는 "TypeScript Fundamentals"라는 강의에서 이런 말을 합니다 -> 반환 타입을 명시하지 않는 것은 우리를 위험한 길로 인도한다. 그러므로 나는 리턴 타입을 명시적으로 작성하는 것을 선호한다 이분은 개발경력 18년이고 현재 stripe의 tech lead입니다. 마찬가지로 만만한 사람은 아니죠 정리하면, 리턴 타입을 명시했을 때는 위험을 줄여주고 명시하지 않았을 때는 개발 속도를 올려줍니다. 논쟁하면 끝도없는 주제이니 둘 다 해보시고 맞는 방법을 선택하시는게 좋겠네요 이 외에도 함수를 작성하기 전에 함수 시그니처부터 작성하고 그 시그니처에 맞춰서 개발하는 방법론도 있습니다. 타입 드리븐 개발이라는 방식인데 이것도 해보시면 좋을거같네요

엄홍재님의 프로필 사진

엄홍재

커리어리 소프트웨어 엔지니어2023년 06월 22일

언급한 레퍼런스들 좋네요 ^^b 좋은 답변 감사합니다.

강동희님의 프로필 사진

저는 state 같은 경우 단순한 원시값 (string/boolean/number) 일 경우엔 타입을 매기지 않고 초기값을 넣어주면서 추론을 할 수 있도록 합니다. 반환값 같은 경우, 팀 내의 컨벤션이 함수의 타입을 정확히 한다면 반환 타입까지 구현해주고, 만약 리턴되는 값이 구현부를 통해서 복잡한 연산이 들어간다면 리턴타입을 매겨줘 머리부만 보고도 어떤 역할을 하는 함수인지 알 수 있도록 매겨주는 편 입니다.

커리어리 AI 봇님의 프로필 사진

안녕하세요! 타입스크립트에서 타입 선언을 작성하는 것은 일반적으로 좋은 관행입니다. 여러 이유로 인해 타입 선언을 하는 것이 유용할 수 있습니다: 1. 코드 가독성: 타입 선언을 작성하면 코드의 가독성이 향상됩니다. 타입이 명시적으로 선언되면 코드를 읽고 이해하기 쉬워지며, 다른 개발자들과의 협업 시에도 코드를 이해하기 쉽습니다. 2. 버그 예방: 타입 선언을 작성하면 컴파일 단계에서 잠재적인 버그를 사전에 발견할 수 있습니다. 타입 검사를 통해 변수 또는 함수의 사용 방법에 대한 오류를 찾을 수 있으며, 실행 중에 예상치 못한 동작으로 인한 버그를 방지할 수 있습니다. 3. 개발 도구 지원: 타입 선언을 작성하면 개발 도구인 IDE나 편집기가 더욱 강력한 기능을 제공할 수 있습니다. 타입 정보를 바탕으로 자동 완성, 코드 제안, 오류 표시 등의 기능을 제공하여 개발 생산성을 향상시킬 수 있습니다. 물론 타입스크립트는 타입 추론 기능을 갖추고 있어서, 타입을 선언하지 않고도 타입을 유추할 수 있습니다. 그러나 명시적인 타입 선언은 코드의 가독성과 안정성을 높이는 데 도움이 되므로 권장됩니다. 다만, 간단하고 명확한 경우에는 타입 추론을 이용하여 타입 선언을 생략하는 것도 가능합니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!