개발자
안녕하세요 코드를 보다가 type PackageTypes = keyof typeof Package; 라는 코드를 봤는데 여기서 keyof typeof는 뭔가요? PacakgeTypes에 마우스를 올려보면 "curated" | "drafted" | "single" 이런식으로 나오는데 뭔지 잘 모르겠네요.
답변 1
하나씩 풀어서보면 이해하시기 쉬울 것 같습니다. keyof typeof Package 일단 keyof 부터 보시면 object의 키 값을 읽어온다고 합니다. (https://www.typescriptlang.org/docs/handbook/2/keyof-types.html) 다음 typeof 는 해당 변수의 type을 뜻한다고 합니다. (https://www.typescriptlang.org/docs/handbook/2/typeof-types.html) 마지막 Package는 정보가 없지만 아마도 "curated", "drafted", "single"이라는 정보를 담고 있는 enum 이겠죠? enum Package { curated, drafted, single } 와 같은 형태로 선언됐을거라고 생각합니다. 다시 keyof typeof Package를 보시면 "Package의 타입의 키"를 뜻한다는 것을 알 수 있게 됩니다. 한가지 더 첨언하자면, enum이라고 추측한 이유는 타입스크립트 enum에 keyof를 사용하면 그냥 객체 형태에 사용하는 것처럼 동작하지 않는다고 공식 문서에 나와있습니다. enum의 키 값을 읽어오는 예시로 keyof typeof를 쓰고 있는 것을 알 수 있습니다. (https://www.typescriptlang.org/docs/handbook/enums.html#enums-at-compile-time)
익명
작성자
2022년 10월 17일
자세한 설명 감사드립니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!