개발자
아래 코드처럼 Type을 2개 정의 했는데요 둘의 차이가 정확하게 어떤건가요? 결국 undefined를 가능하게 하는 type 아닌가요? 타입스크립트 어렵네요ㅜ
답변 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() // 실행 가능
익명
작성자
2023년 04월 13일
친절한 설명 감사해요!!!
' 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 봇의 답변을 평가해 주세요!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!