개발자

[typescript] 제가 Type을 정의 했는데 둘의 차이점이 무엇인가요? undefined 값을 허용하는 Type으로 동일한거 아닌가요? (코드 첨부)

2023년 04월 11일조회 195

아래 코드처럼 Type을 2개 정의 했는데요 둘의 차이가 정확하게 어떤건가요? 결국 undefined를 가능하게 하는 type 아닌가요? 타입스크립트 어렵네요ㅜ

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

답변 2

인기 답변

김현진님의 프로필 사진

두 코드가 가지는 의미가 약간 다릅니다. 첫번째 코드는 test 변수가 필요하지만 undefined 값일 수도 있다는 의미이고 두번째 코드는 test 변수가 옵셔널하다는 의미입니다. 얼핏 보면 비슷한 의미인듯하지만 값을 선언할 때 달라집니다. Type2 타입의 변수는 test가 없어도 되지만 Type1 타입의 변수는 test 값이 존재하기는 해야하기 때문입니다. Type1, Type2와 같은 모양을 파라미터로 갖는 Func1, Func2함수가 다음과 같이 있다고 할 때 실행에서 달라집니다. Func1은 파라미터 test가 string 혹은 undefined 타입으로 꼭 받는다고 선언한 것이고, Func2는 파라미터 test가 없거나 string으로 받을 수도 있다고 선언했기 때문입니다. 두 타입 선언이 비슷하게 생겼고 의미도 비슷하지만 required, optional에서 차이가 있습니다.

1
2
3
4
5
const Func1 = (test: string | undefined) => void
const Func2 = (test?: string) => void

Func1() // 실행 불가능
Func2() // 실행 가능
profile picture

익명

작성자

2023년 04월 13일

친절한 설명 감사해요!!!

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

' Type1 '과 ' Type2 '는 매우 유사한 동작을 가지지만, 약간의 차이가 있습니다. ' type Type1 = { test: string | undefined }; ' 이 타입은 test 프로퍼티가 반드시 존재해야 하지만, 그 값이 ' string '이거나 ' undefined '일 수 있습니다. 객체에서 ' test ' 프로퍼티를 생략할 수 없습니다. ' type Type2 = { test?: string }; ' 이 타입은 ' test ' 프로퍼티가 있거나 없을 수 있습니다. 프로퍼티가 있을 경우에는 값이 ' string '이어야 합니다. ' test ' 프로퍼티를 생략할 수 있으며, 이 경우 자동으로 ' undefined '로 취급됩니다. 결국 둘 다 ' undefined ' 값을 허용하지만, ' Type1 '은 ' test ' 프로퍼티가 반드시 존재해야 하고, ' Type2 '는 ' test ' 프로퍼티가 선택적으로 존재할 수 있다는 차이가 있습니다. ----- ✅ Chat GPT의 답변을 평가해 주세요! - 틀린 내용은 없는지, 답변이 도움이 되었는지 댓글로 작성해 주세요.

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

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

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

또는

이미 회원이신가요?

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

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

새로운 질문 올리기

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