Bài học theo mô-đun (1/2)
Cấu hình với tsconfig.json
Tệp tsconfig.json chỉ định thư mục gốc của dự án TypeScript và các tùy chọn trình biên dịch cần thiết để xây dựng dự án.
Bất cứ khi nào bạn chạy tsc trong thư mục dự án, trình biên dịch sẽ tìm kiếm tệp này để hướng dẫn hành vi biên dịch của nó.
Cấu trúc của tệp tsconfig.json
Một tệp cấu hình điển hình trông như thế này:
{
"compilerOptions": {
"target": "es2022",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}Các thuộc tính chính là:
compilerOptions: Cài đặt cho trình biên dịch.include: Chỉ định file hoặc thư mục cần biên dịch.exclude: Chỉ định các tệp hoặc thư mục cần bỏ qua trong quá trình biên dịch.
Tùy chọn trình biên dịch khóa
Dưới đây là một số cài đặt quan trọng nhất cần biết:
target: Chỉ định phiên bản đầu ra JavaScript của trình biên dịch (ví dụ:es5,es6/es2015,es2020,esnext).module: Chỉ định hệ thống mô-đun được sử dụng trong mã được biên dịch (ví dụ:commonjs,esnext,node16).strict: Cho phép một loạt các hành vi kiểm tra loại nghiêm ngặt. Bạn nên đặt giá trị này thànhtrueđể đảm bảo an toàn loại tối đa. Nó cho phép các tùy chọn như:noImplicitAny: Phát sinh lỗi trên các biểu thức và khai báo có loạianyngụ ý khi không cung cấp chú thích loại.strictNullChecks: Ngăn việc chỉ địnhnullhoặcundefinedcho các loại không bao gồm chúng một cách rõ ràng trong liên kết của chúng.
Hãy tự mình thử
Bài tập 1: Xử lý strictNullChecks
Trong tùy chọn strictNullChecks: true trong tsconfig.json, chúng tôi không thể gán null hoặc không xác định cho các kiểu nguyên thủy. Khai báo một hàm có tên là parsAge chấp nhận đầu vào kiểu string | null và trả về một số nếu đầu vào không phải là null và là số nguyên hợp lệ, nếu không thì trả về 0. Xử lý rõ ràng trường hợp null để vượt qua quá trình biên dịch nghiêm ngặt.
Hiển thị gợi ý
Kiểm tra xem đầu vào có rỗng khi bắt đầu hàm hay không và trả về 0 ngay trước khi xử lý chuỗi.
Giải pháp khả dụng sau 3 lần thử
Bài tập 2: Gõ đúng mà không có ẩn ý
Trong noImplicitAny: true, bất kỳ tham số nào có loại không thể suy ra đều phải được nhập rõ ràng. Tạo một hàm có tên là processItems chấp nhận một mục mảng (mảng số) và một hàm gọi lại lấy một số duy nhất làm đối số và không trả về gì. Đảm bảo không sử dụng bất kỳ và nhập mọi thứ một cách rõ ràng.
Hiển thị gợi ý
Khai báo hàm có chữ ký hàm processItems(items: number[], callback: (item: number) => void): void.
Giải pháp khả dụng sau 3 lần thử