250x250
Notice
Recent Posts
Recent Comments
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- wil
- flutter
- Express
- single quote
- moment
- TypeScript
- nginx
- double quote
- sequelize
- MYSQL
- RDS
- EC2
- clipBehavior
- async
- TailwindCSS
- mongodb
- JavaScript
- atlas
- https
- mongoose
- Nodejs
- til
- css
- certbot
- Find
- Node.js
- findByIdAndDelete
- jsonwebtoken
- AWS
- await
Link
Archives
기억 휘발 방지소
[TypeScript] Express에 TypeScript 적용하기 본문
728x90
반응형
설치한 라이브러리들은 다음과 같다
- express
- typescript
- @types/express: Express 모듈에 대한 type을 지원
- @types/node: Node.js 타입을 추가
- nodemon
먼저 간단한 예시 코드를 만들었다.
// app.ts
import express from "express";
const app = express();
app.listen(4000, () => {
console.log("✅ Server listening on 4000");
});
에러처리를 위한 미들웨어를 만드는데 JavaScript로 했을 때와 좀 다른게 매개변수의 타입을 다 적어줘야했다.
express.Request, express.Response, express.NextFunction을 넣어줘도 되고 아래 코드처럼 해도 된다.
// app.ts
import express, { Request, Response, NextFunction } from "express";
// ...
app.use((err: Error, req: Request, res: Response, next: NextFunction) => {
return res.status(500).json({ message: err.message });
});
route를 작성할 땐 다음과 같이 해준다.
import { Router } from "express";
const router = Router();
router.메소드("/", 컨트롤러);
export default router;
controller를 작성할 때 JavaScript로 했을 때와 차이가 있다.
// controller.js
export const 메서드 = (req, res, next) => {
// ...
};
JavaScript로 할 때는 위에 코드처럼 했는데 TypeScript를 적용하면 아래 코드와 같이 req, res, next에 대해 타입을 지정해줘야한다.
// controller.ts
import { Request, Response, NextFunction } from "express";
export const 메서드 = (
req: Request,
res: Response,
next: NextFunction
) => {};
일일이 req, res, next에 대한 타입을 다 적어줘도 되지만 아래 코드처럼 RequestHandler를 사용하면 더 짧게 작성할 수도 있다.
// controller.ts
import { RequestHandler } from "express";
export const 메서드: RequestHandler = (req, res, next) => {};
728x90
반응형
'Web > TypeScript' 카테고리의 다른 글
[TypeScript] 리터럴 타입 (Literal Types) (0) | 2022.02.12 |
---|---|
[TypeScript] 함수 (Function) (0) | 2022.02.11 |
[TypeScript] 인터페이스 (Interface) (0) | 2022.02.11 |
[TypeScript] 기본타입 (0) | 2022.02.11 |
[TypeScript] Node.js에서 TypeScript 실행하기 (0) | 2022.02.08 |