Setting up node project with typescript
Bài đăng này đã không được cập nhật trong 5 năm
Introduction
- Như chúng ta đã biết JS là ngôn ngữ kiểu dynamic type.
- Typescript giúp có thể đọc và code JS như static typethay vì `dynamic type.
- Bài viết này chú trọng tới cài đặt một dự án với typescript.
Let's start
- Initializing an Npm project
- 
Cùng khởi tạo nhanh project NodeJS: $ mkdir node_project $ cd node_project $ npm init -y
- Installing Dependencies
- 
Chúng ta khởi tạo xong project. Phần tiếp theo cần cài đặt các gói phụ thuộc để có thể chạy được typescriptnpm i -D typescript npm i -D tslint
- 
Option -Dviết tắt cho:--save-dev.
- 
Tiếp theo cài đặt expressframework:npm i express -S npm i @types/express -D
- 
Câu lệnh thứ hai trên cài đặt Express types. Sở dĩ chúng ta cần package này vì TypeScript và Express là các package độc lập nhau do vậy không có cách nào để Typescriptbiết về các kiểu của cácclassstrong Express.
- Configuring TypeScript
- Typescript sử dụng file tsconfig.jsonđể cấu hình trình biên dịch cho project. Do vậy chúng ta khởi tạo filetsconfig.jsoncùng cấp với filepackage.jsonvới nội dung như dưới:
{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist"
  },
  "lib": ["es2015"]
}
- 
Cùng nhìn qua một vài tùy chọn trên và chúng làm gì: - 
module: Chỉ định phương thức khởi tạo module. Node sử dụngcommonjs.
- 
target: Level của output ( ở đây là es6)
- 
moduleResolution: giúp trình biên dịch tìm ra việcimportsẽ tham chiếu tới đâu. Giá trịnode-> bắt chước cơ chế phân phân giải module củanode.
- 
outDir: Nơi lưu file.jssau khi được biên dịch. Chúng ta lưu trong folderdist.
 
- 
- 
Note: Bạn có thể làm việc này tự động bằng câu lệnh: tsc --init 
- 
Tiếp theo chúng ta sẽ cấu hình Typescript linting cho project. Chạy câu lệnh sau để khởi tạo file tslint.json:
  ./node_modules/.bin/tslint --init
- Mở file tslint.jsonvà thêm tùy chọnno-consolenhư dưới:
{
  "defaultSeverity": "error",
  "extends": ["tslint:recommended"],
  "jsRules": {},
  "rules": {
    "no-console": false
  },
  "rulesDirectory": []
}
- Theo mặc định, Typescript linter sẽ chặn console, muốn sử dụng chúng ta cần thêm rule như trên.
- Updating the Package.json file
- Cùng tạo script startgiúp chúng ta biên dịch codeTypescriptra file.jsvà chạy chúng. Cập nhật lại filepackage.jsonnhư dưới:
{
  "name": "node_project",
  "version": "1.0.0",
  "description": "",
  "main": "dist/app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "tsc && node dist/app.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@types/express": "^4.17.2",
    "tslint": "^5.20.1",
    "typescript": "^3.7.4"
  },
  "dependencies": {
    "express": "^4.17.1"
  }
}
- Chúng ta đã cập nhật lại mainpath. Và tạo scriptstart: khởi chạytsctrước và sao đó chạy lệnhnode. Việc này cho phép chúng ta biên dịch trước và chạy kết quả sau khi biên dịch vớinode.
- Setting up the folder structure
- Chúng ta sẽ tạo folder srccùng cấp với filepackage.jsonvà tạo một fileapp.tsbên trong nó như dưới:
  mkdir src
  cd src
  touch app.ts
- Đến thời điểm này bạn nên có cấu trúc thư mục như dưới:
.
├── package.json
├── package-lock.json
├── src
│   └── app.ts
├── tsconfig.json
└── tslint.json
1 directory, 5 files
- Create and running a basic Express Server
- Chúng ta đã cấu hình Typescript và Typescript linter, tiếp theo chúng ta sẽ xây dựng Node Express Server. Với nội dung trong file app.tsnhư dưới.
import express from "express";
const app = express();
const port = 3000;
app.get("/", (req, res) => {
  res.send("The sedulous hyena ate the antelope!");
});
app.listen(port, err => {
  if (err) {
    return console.error(err);
  }
  return console.log(`server is listening on ${port}`);
});
- Đoạn code trên tạo một server Node đơn giản lắng nghe trên port 3000. Cùng chạy ứng dụng với câu lệnh sau.
npm start
- Khi câu lệnh thực thi hoàn tất bạn nên thấy thông báo server đang chạy trên port 3000:
> tsc && node dist/app.js
server is listening on 3000
- Và cấu trúc thư mục sẽ trông như thế này ( folder dist được "xinh" ra với các file bên trong):
.
├── dist
│   ├── app.js
│   └── app.js.map
├── package.json
├── package-lock.json
├── src
│   └── app.ts
├── tsconfig.json
└── tslint.json
2 directories, 7 files
- Bạn cũng có thể truy cập local với đường link: localhost:3000.
curl localhost:3000
The sedulous hyena ate the antelope!
- 
Nếu muốn bạn cũng có thể mở file dist/app.jsđể xem phiên phản biên dịch củaTypescriptcode. 
- 
Nice! như vậy chúng ta đã setup thành công cho project Node sử dụng Typescript! 
Conclusion
- Cảm ơn bạn đã theo dõi tới đây và chúc bạn:
Happy coding with Typescript
All rights reserved
 
  
 