์ด๋ด!
์์ฒญ ๋ณธ๋ฌธ์ 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;
...
...
}
๋์ํฉ๋๋ค. ์์ฒญ ๋ณธ๋ฌธ์ ์
๋ ฅํ๋ ค๋ ์ฌ๋๋ค์ ๋ํด ๋ณ๊ฒฝ๋์ด์ผ ํ๋ฉฐ 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;
}
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ํ ๊ธฐ๋ณธ ์ ๋ค๋ฆญ์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ์ ์ค๋จํ์ง ์๊ณ ์ด ๊ธฐ๋ฅ์ ํฌํจํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์: