inflearn logo
강의

講義

知識共有

一口サイズで切って食べるReact.js実践プロジェクト - SNS編

(6.8) Zustandを利用したセッション管理

명시적 타입 선언(콜론 타입 선언)과 as 타입 단언 차이

5

manajini7740

投稿した質問数 3

0

안녕하세요 6.8 Zustand를 이용해 세션 관리하기
4:52초에 타입 선언 부분에
타입 문의가 있어서요!

아래처럼 차이가 뭔지 잘 모르겟네요

강사님은 as 타입선언으로 자주 쓰시던데

ai 물어보니 initailState: State 이 형식이

명시적 타입 선언 이라 더 엄격해서 추천한다고 하던데 as로 타입 단언 하는 이유가 있으신가요?


const initailState: State = {
  isLoaded: false,
  session: null,
};

const initailState = {
  isLoaded: false,
  session: null,
} as  State;

react typescript react-query supabase zustand

回答 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 이민진님.

질문 주신 TypeScript의 명시적 타입 선언과 as 키워드를 이용한 타입 단언에 대해 간단히 설명해 드리겠습니다.

명시적 타입 선언 vs 타입 단언

  1. 명시적 타입 선언 (const initailState: State = { ... };):

    • 변수 선언 시 타입을 명시적으로 지정합니다.
    • TypeScript 컴파일러가 객체의 형태를 자세히 체크하여 선언한 타입(State)과의 일치 여부를 검사합니다.
    • 타입 미스매치가 발생하면 컴파일러에서 오류를 즉시 감지할 수 있어 더 엄격하게 타입을 관리할 수 있습니다.
  2. 타입 단언 (as) (const initailState = { ... } as State;):

    • 데이터가 특정 타입임을 “개발자가 보증”한다고 선언합니다.
    • TypeScript 컴파일러는 해당 객체를 그 타입으로 사용하도록 강제하지만, 타입 체크는 상대적으로 느슨하게 수행됩니다.
    • 개발 단계에서 유연하게 객체를 선언하고 싶을 때 유용하게 사용할 수 있습니다.

as State를 사용하는가?

  • 개발 편의성: 초기 데이터 설정 시 추가적인 변경 사항이나 기능이 추가됨에 따라 빠르게 적응하며 작업하기 쉽습니다.
  • 유연한 타입 관리: 엄격하게 타입이 체크되지 않아 새로운 속성을 잠시 추가하거나, 타입 구조에 구애받지 않고 객체를 사용할 수 있습니다.
  • 복잡한 타입 구조: 경우에 따라 복잡한 타입 정의가 필요한 객체에 대해 보다 관리하기 쉽게 접근할 수 있습니다.

그래서 as State는 개발 초기 단계에서 더욱 유연하고 빠르게 사용할 수 있으며, 타입 체크 과정에서의 제약을 느슨하게 만드는 대안으로 적합합니다. 그러나 이는 비교적 자유롭게 타입을 다루겠다는 의도일 뿐, 프로젝트의 요건이나 팀의 코드 스타일 등에 따라 적정한 방법을 결정하셔야 합니다.

참고 링크

관련된 토픽에 대해 더 알고 싶으시다면 아래 유사한 질문 답변을 참고하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

useMutation 적용 후 새로운 글 등록시 content가 안보여요

0

34

2

6.8 zustand 세션 질문입니다.

0

79

2

next.js 강의에서도 리액트 라이브러리들을 다뤄주시나요?

0

64

2

shadcn에서 radix ui와 base ui 차이는 뭔가요?

0

226

2

updateTodo 함수 생성시 화살표 함수 사용 안하는 이유

0

69

2

4.11 바로 투두 삭제가 안됨 질문

0

77

3

매개변수 updatedTodo 관련 질문

0

60

3

인증 정보가 만료되었을 때 라우트 가드 처리가 궁금합니다!

0

75

2

supabase를 사용하지 않을 경우 세션 데이터의 변경을 감지하고 스토어에 보관하는 방법이 궁금합니다!

0

61

2

4.6 id를 string으로 변경시 오류

0

58

2

리액트 타입스크립트 관련 질문있습니다.

0

56

1

소셜 로그인 구현하기 관련하여 질문이 있습니다!

0

93

2

ui 파일 질문드립니다.

0

67

1

tanstack query devtools에서 질문있습니다!

0

61

2

댓글 삭제 시 isPending 질문

0

57

2

두번째 예외상황에 대해 질문있습니다!

0

58

1

리액트 쿼리 질문입니다

0

61

2

개발자도구에서 components 가 안보입니다.

0

83

3

state 관리에 대한 정리

0

73

3

[(2.4) Shadcn/ui를 소개합니다] 강의 Shadcn 세팅 관련 질문 있습니다.

0

154

3

like 테이블에서 왜 create_at이 필요한지 궁금합니다.

0

69

1

삭제가 바로 안되네요ㅠ

0

57

2

access 토큰은 꼭 소셜서버로부터 받아서 사용해야만하나요?!

0

74

2

전역 모달이 여러 개일 경우 모달 프로바이더는 몇 개가 필요한가요?

0

58

1