Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Udemy/Ts/section7/101: Partial, Readonly type #63

Open
wants to merge 49 commits into
base: UdemyTs
Choose a base branch
from

Conversation

4BFC
Copy link
Member

@4BFC 4BFC commented Oct 2, 2024

✍Udemy/Ts/section7/101: Partial, Readonly type

본 PR은 청강 1회독을 마친 후 N회독으로 작성된 PR입니다.

🔗Reference

🔥KeyWord

  • Partail Type
  • Optional Type
  • ?
  • Readonly Type

📝Description

  • Partial & Readonly Type
  • 🚩: Partial 타입을 사용하는 방법과 실습 readonly 타입으로 Generic과 함께 사용하는 방법 실습
  • Partial과 Readonly는 모두 Generic Utility Type으로 기존 타입을 변형해서 유연하게 사용할 수 있도록 도와준다. 이는 타입 안정성을 유지할 수 있으며 유연한 코드를 만들어 낼 수 있다.
    • Partial
      • Partial은 기존의 인터페이스나 타입을 기반으로 모든 속성을 선택적(optional)로 변경하는 타입이다. 즉, 이전 강의에서 다루었던 ?와 같은 옵셔널과 같은 효과를 가져온다. 따라서 inteface에 필요한 요소들을 Optional로 변경하거나 사용한다면 inteface를 기준으로 다른 코드 모든 부분이 선택적인 방향으로 변경이 된다. 즉, 다른 코드에 영향을 준다는 뜻이다. 따라서 Parial를 사용하면 내가 사용하고 싶은 영역의 함수나 코드에서만 Optional 효과를 줄 수 있다는 것이다. 단, 선언과 동시에 모든 속성을 설정할 필요는 없지만 빈 객체 {}를 할다안다면 Type Error가 발생할 것이다. Partial은 모든 속성을 필수적으로 강행하기 때문이다.
        • Partial를 사용하는 상황
          • 객체로 이루어진 interface를 일부 코드, 스크립트에서 Optional 효과를 주고 싶을 때
          • 일부 속성들만 선택적으로 만들고 싶을 때, 유연하게 사용하고 싶을 때
  • Readonly
    • Readonly는 기존 타입의 모든 속성을 읽기 전용(readonly)으로 만드는 타입이다. 즉, 객체의 모든 속성을 수정할 수 없도록 보호한다. inetrface의 readonly와 같은 효과를 주지만 Readonly<Type>은 일부 객체, interface 속성들만 줄 수 있다.

📌Summary

  • Optional에 대해서 깊이 있게 생각을 하게 되었다. 깊게 알게 될 수록 타입을 어떻게 정의 해야하며 재활용해야 할지에 대한 고민들이 조금은 해소되고 있는 듯 하다.

4BFC and others added 30 commits August 27, 2024 01:50
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 작성한 커밋입니다.
Github에서 작성한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
4BFC added 19 commits September 2, 2024 15:19
@4BFC 4BFC added the 2회독 회독 label Oct 2, 2024
@4BFC 4BFC added this to the Udemy:TypeScript milestone Oct 2, 2024
@4BFC 4BFC requested a review from nyun-nye October 2, 2024 10:54
@4BFC 4BFC self-assigned this Oct 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2회독 회독
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant