강좌에서 사용된 3개의 코드 의미가 궁금합니다 [ 코드 : 1. [ key:string]:string] 2. delete user.password , 3.passport.deserializeUser<number> ]
안녕하세요, 제로초 님,
강의 덕분에, 타입 없는 라이브러리도 도전?해볼 수 있게 됐습니다. :]
강좌 보면서 3가지 코드 관련해 궁금해 문의 드립니다
1. '시퀄라이즈', 18:22, '[key:string]:string'
2. '라우터 만들기' , 6:05, delete user.password;
3. serializeUser와 deserializeUser 에러해결 코드, passport.deserializeUser<number>
타입스크립트 관련해 고민했던 내용이 '맞는지' 확인 받고 싶습니다,
감사합니다:]
#1.
'시퀄라이즈' 18:22, '[key:string]:string'
config의 타입을 만들때,
'[key:string]:string' 코드를 넣는 이유가 궁금합니다
'dialect'의 타입부분이 유동적으로 변하기 때문에,
기본 틀(key는 string, value는 string) 목적으로 작성하는 것인가요?
const { database, username, password } = config[env]; 처럼,
key에 해당하는 value를 찾기 위해서
'[key:string]:string'가 필요한지 궁금합니다.
(검색해보면, 타입스크립트 Index Signature 관련해 글이 나옵니다)
타입스크립트에서 객체의 key로 value를 찾을 때,
에러 해결 코드로
'[key:string]:string'를 넣어보라는 글을 읽은적이 있는데요,
제가 생각하는 추리가 맞는건지요?
#2.
'라우터 만들기' 파트, 6:05 에서
const user = req.user?.toJSON() as User;
delete user.password;
return res.json(user); 'delete user.password;'어떤 이유로
user의 passord를 지우는건가요?
코드 흐름에서
유저의 비밀번호를 지우는게(delete) 어떤 의미인건지 궁금합니다.
#3.
passport.deserializeUser<number>
serializeUser와 deserializeUser 에러 관련해 올려주신 코드에서,
deserializeUser에 제네릭 <number>을 어떻게 넣을 수 있으셨는지 '그 방법이' 궁금해 문의드립니다.
passport.deserializeUser<number>(async (id, done) => { ...중략...});passport.deserializeUser 의 id가
user의 id이고,
id의 타입이 number 이기 때문에
제네릭 number을 넣으신거라고 이해했는데요,
passport.deserializeUser 메서드를 마우스 호버해보니
(method) passport.Authenticator<e.Handler, any, any, passport.AuthenticateOptions>.deserializeUser<unknown>(fn: (id: unknown, done: (err: any, user?: false | Express.User | null | undefined) => void) => void): void (+1 overload)
deserializeUser의 제네릭 타입이 id와 연결되어 있습니다,
deserializeUser<unknown> ,
id: unknown
passport.deserializeUser<number>
라고 코드를 변경하니
deserializeUser 메서드와 id 타입이 number 타입으로 바인딩되서 나옵니다,
(method) passport.Authenticator<e.Handler, any, any, passport.AuthenticateOptions>.deserializeUser<number>(fn: (id: number, done: (err: any, user?: false | Express.User | null | undefined) => void) => void): void (+1 overload)
혹시,
타입스크립트에서 타입을 제대로 넣으려면( = 타입스크립트를 제대로 사용하려면),
함수/변수 를 클릭해 index.d.ts를 이리저리 읽어보거나,
Vscode가 알려주는 타입을 확인하는 습관이 중요한건지요?
(당연, 자바스크립트를 잘 아는 것도 중요하지만,,)
강좌에서 말씀 해주셨던 내용들이랑
위의 serializeUser와 deserializeUser 에러 리팩토링 된 코드를 보면서
제대로 생각 정리가 됐는지 궁금해 문의드립니다.
답변 1
'S3' 형식에 'S3Client' 형식의 destroy, middlewareStack, send 속성이 없습니다.ts(2739)
0
509
1
throw new Error(&#x60;${this.name}.hasMany called with something that&#x27;s not a subclass of Sequelize.Model&#x60;); 에러 질문
0
343
1
안녕하세요.. connect ECONNREFUSED 127.0.0.1:3306 관련해서 질문드립니다
0
958
1
@types를 dependencies에 넣는 이유?
0
401
1
JS에서 babel 사용시 `import * as` 구문을 안써도되는데, 바벨이 esModuleInterop: true 로 처리해주는 것인가요?
0
318
1
Sequelize Association 오류
0
514
2
Sequelize constructor.primaryKeyAttributes 오류
0
973
1
Sequelize에 요청을 보내면 오류가 뜹니다
0
797
1
@mui/x-data-grid 에 사용자정의 컬럼 타입을 추가해서 사용하려고 합니다.
0
2621
1
미들웨어 에러
1
313
1
Could not find a declaration file for mould '../utils/jwt-utils'
1
181
1
마지막에 type과 interface 추가하는 부분
0
218
1
다른 컴퓨터에서 제가 만든 DB 테이블의 데이터를 그대로 사용하려면?
0
282
1
express 모듈 에러 관련
0
241
1
import * as A from 'B'
0
216
1
MySql ssl 보안 옵션 질문 입니다.
0
353
2
passport/index.ts 에러 입니다
1
453
1
routes/post.ts 페이지에서 에러나요..
0
315
1
passport/index.ts 에러납니다...
0
818
1
ts import 에러
0
443
1
타입스크립트로 변환후 nextjs 빌드 후 배포
0
263
1
sequelize include 질문드립니다.!
0
192
1
roperty 'id' does not exist on type 'User'.
0
900
1
passport user.id 질문드립니다.
0
204
1





