PickType 사용 시 `as const`를 꼭 사용해야 하나요?
99
3 asked
https://docs.nestjs.com/openapi/mapped-types#pick
문서에서 as const를 쓰던데 안 써도 괜찮은가요?
Answer 2
0
안녕하세요, 인프런 AI 인턴입니다.
as const는 TypeScript에서 사용되는 구문으로, 리스트의 요소들을 리터럴 타입으로 고정시키는데 사용됩니다. 기본적으로 배열의 요소들은 일반적인 문자열 타입으로 해석되지만 as const를 사용하면 각 요소가 ‘리터럴 타입’으로 변환됩니다. 이로 인해 더 구체적인 타입 확인과 안전성을 보장할 수 있습니다.
NestJS에서 PickType을 사용할 때 as const를 붙이지 않으면 특정 요소들이 ‘리터럴 타입’이 아닌 그냥 ‘string’ 타입으로 처리됩니다. 그러므로, as const를 사용하는 것은 타입 안전성을 높이고 자바스크립트 구조의 처음 정의된 형태를 변경하지 않도록 합니다.
다음의 예시를 통해 이해를 돕겠습니다:
PickType을 사용 시'age'를 타입으로 설정 하게 되면,'age'는string타입으로 취급됩니다.
PickType(CreateCatDto, ['age']) // 'age'는 string 타입 리스트입니다.
as const를 사용하여'age'를 고정하면'age'가 리터럴 타입으로 취급됩니다.
PickType(CreateCatDto, ['age'] as const) // 'age'는 'age' 타입 리스트입니다.
그래서 결론적으로 프로젝트에 따라 as const를 사용하지 않고도 동작할 순 있지만, 가능한 as const를 사용하는 것이 더 안전한 코드 작성을 돕습니다. 추가적인 TypeScript 타입 안전성을 높이고자 할 때 고려하시면 도움이 될 듯 합니다.
관련된 유사한 질문과 답변을 확인하기 위해 다음 URL을 참고해 주세요:
- NestJS Mapped types에 관해 궁금한게 있습니다
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
cascade 질문
0
35
1
@types/bcrypt 설치과정이 누락된것같습니다.
0
41
1
process.env port key 에러
0
43
1
추상화
0
45
1
[공유] DTO optional 필드가 undefined로 잡혀 TypeORM 조건이 깨지는 현상
0
92
2
where 키워드가 들어가는 메서드와 아닌 메서드
0
53
1
BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?
0
66
1
app.controller app.service 는 지워도되나요?
0
67
1
@JoinColumn을 쓰는 경우와 안쓰는 경우의 차이
0
75
1
포트 3000에서 listen하는 곳까지 넘어가지 않습니다.
0
62
1
socket connect 오류
0
95
2
강의를 들으면서 궁금한 점
0
95
2
DELETE 요청의 반환값은 어떤 기준으로 결정하는 게 좋을까요?
0
55
2
커리큘럼 질문
0
95
2
put 요청은 언제
0
88
3
typeorm VS prisma
0
339
2
142 강의 > 4:00 > 포스트멘 활용 관련 질문 드립니다.
0
74
2
User 데코레이터 버그 수정 전달드립니다.
0
64
1
git 주소 부탁드립니다.
0
109
2
nest g resource 명령어 에러
0
97
2
로그인 엔드포인트 관련 질문
0
81
2
yarn으로 express 다운 후 node 2_server.js 실행 안되는 경우
0
143
3
"흔히 사용되는 메서드" 강의 관련 질문입니다~
0
93
2
@nestjs/serve-static
0
105
2

