Definitelytyped: @types/express ์š”์ฒญ์˜ ๋ณธ๋ฌธ ๊ฐœ์ฒด๋ฅผ T๋กœ(์ผ๋ฐ˜)

์— ๋งŒ๋“  2017๋…„ 06์›” 05์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: DefinitelyTyped/DefinitelyTyped

์ด๋ด!

์š”์ฒญ ๋ณธ๋ฌธ์„ T๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ๋‚ด ๊ฐœ์ฒด์— ํฌํ•จ๋œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

express-serve-static-core/index.d.ts ๋ผ์ธ 438:

interface Request<T> extends http.IncomingMessage, Express.Request {
...
...
body: T
...
...

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

updateUser = (req: Request<User>, res: Response, next: NextFunction) => {
   const userToUpdate = req.body;
...
...
}

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋˜ํ•œ ๊ธฐ๋ณธ ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ์„ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ  ์ด ๊ธฐ๋Šฅ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ:

interfare Request<B = any, Q = any, P = any, C = any> {
  body: B;
  query: Q;
  params: P;
  cookies: C;
}

๋ชจ๋“  3 ๋Œ“๊ธ€

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ ๋ณธ๋ฌธ์„ ์ž…๋ ฅํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•ด ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋ฉฐ cookies , params , query , @borisyankov ์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?

๋‚˜๋Š” ์ด ์•„์ด๋””์–ด๋ฅผ ์‹ซ์–ดํ•˜์ง€ ์•Š์ง€๋งŒ ๋™์‹œ์— body ์ด(๊ฐ€) ์ด์œ  ์—†์ด ๋ˆ„๋ฝ๋˜์—ˆ์Œ์„ ์„ค๋ช…ํ•˜๋Š” types/express์˜ ์ด ๋ฌธ์ œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” body ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ Express Request ๊ฐ์ฒด์— ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋”” ํŒŒ์„œ๋กœ ์ธํ•ด ์ถ”๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ Body-parser์˜ ConfirmlyTyped ๋ฒ„์ „์€ ๊ทธ๋“ค์ด ์ œ์•ˆํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์— ๋ณธ๋ฌธ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ™•์‹คํžˆ Typed/body-parser๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ธฐ๋ณธ ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ์„ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ  ์ด ๊ธฐ๋Šฅ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ:

interfare Request<B = any, Q = any, P = any, C = any> {
  body: B;
  query: Q;
  params: P;
  cookies: C;
}
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰