Cách tôi bán TypeScript (Sales Pitch)
(2ality.com)- TypeScript là ngôn ngữ bổ sung thông tin kiểu cho JavaScript
- Thông tin kiểu sẽ bị loại bỏ trước khi được JS engine thực thi → tức là trong quá trình viết và phát hành cần thêm một bước xử lý
- Bước bổ sung đó có đáng giá không? → Hoàn toàn đáng giá
Tự động hoàn thành và phát hiện lỗi khi chỉnh sửa mã
- TypeScript cung cấp tự động hoàn thành và phát hiện lỗi khi viết mã
- Ví dụ 1: lỗi gõ sai, sai kiểu, thiếu đối số
- Hiển thị lỗi khi truy cập thuộc tính không tồn tại. Cũng sẽ không xuất hiện trong gợi ý tự động hoàn thành
- Hiển thị lỗi khi gọi phương thức với kiểu không đúng
- Hiển thị lỗi khi thiếu đối số bắt buộc
- Hiển thị lỗi khi truyền đối số sai kiểu
- Ví dụ 2: lỗi giá trị trả về của hàm
- Hiển thị lỗi nếu giá trị trả về không khớp với kiểu đã định nghĩa
- Ví dụ, nếu giá trị trả về là
string[]nhưng kiểu trả về được định nghĩa làstringthì sẽ phát sinh lỗi
- Ví dụ 3: lỗi xử lý thuộc tính tùy chọn
- Khi dùng thuộc tính tùy chọn làm giá trị trả về, nếu kiểu không khớp thì sẽ hiển thị lỗi
- Ví dụ 4: thiếu
casetrong câu lệnhswitch- Nếu không xử lý hết mọi
casetrong câu lệnhswitchthì sẽ phát sinh lỗi - Nếu vi phạm yêu cầu rằng giá trị còn lại phải có kiểu
neverthì sẽ phát sinh lỗi
- Nếu không xử lý hết mọi
- Ví dụ 5: lỗi xử lý một số trường hợp cụ thể trong mã
- Khi phân nhánh theo một giá trị cụ thể, các trường hợp sai sẽ phát sinh lỗi
- Ví dụ, nếu truy cập một thuộc tính không tồn tại trên một kiểu đối tượng cụ thể thì sẽ phát sinh lỗi
Khai báo tham số hàm và kiểu trả về → đóng vai trò tài liệu hóa tốt
- TypeScript cho phép khai báo tham số của hàm và kiểu trả về
- Cải thiện khả năng hiểu mã và khả năng bảo trì
- Giúp thể hiện rõ kiểu của đối số và giá trị trả về của hàm
Tăng cường refactor mã
- TypeScript giúp thực hiện refactor mã an toàn hơn
- Khi đổi tên phương thức, thay đổi sẽ được phản ánh an toàn trên mọi đoạn mã liên quan
- Có thể nắm bắt chính xác các mối liên kết trong mã
Việc dùng TypeScript ngày càng dễ hơn
- Việc chạy và biên dịch TypeScript đã trở nên dễ hơn
- Có thể chạy TypeScript trực tiếp trên các nền tảng như Node.js, Deno, Bun
- Các bundler như Vite hỗ trợ TypeScript mặc định
- Áp dụng kỹ thuật type stripping → chỉ loại bỏ thông tin kiểu mà không có biến đổi nào khác
- Việc phát hành gói npm cũng được cải thiện → hỗ trợ tự động tạo JavaScript và file khai báo kiểu
Nhược điểm của TypeScript
- Có đường cong học tập → phức tạp hơn JavaScript
- Có thể phát sinh vấn đề nếu một số gói npm không có định nghĩa kiểu hoặc định nghĩa sai
- Cấu hình
tsconfig.jsoncó thể phức tạp- Có thể giảm bớt vấn đề nếu cấu hình ở mức nghiêm ngặt tối đa
- Khi việc loại bỏ kiểu trở nên rõ ràng hơn, vai trò của
tsconfig.jsoncũng được đơn giản hóa
FAQ về TypeScript
Mã TypeScript có bị nặng nề không?
- Nhờ suy luận kiểu, TypeScript cho phép viết mã chỉ với lượng định nghĩa kiểu tối thiểu
- Vẫn có thể hoạt động hữu ích mà không cần chú thích kiểu phức tạp
TypeScript có đang cố biến JavaScript thành C# hoặc Java không?
- Ban đầu, để bù đắp các tính năng còn thiếu của JavaScript, nó đã bổ sung các yếu tố như class, module, enum
- Hiện nay, TypeScript đang được cải thiện để phù hợp với tiêu chuẩn ECMAScript
- Các tính năng không có trong JavaScript sẽ không được thêm vào TypeScript
TypeScript có chỉ hỗ trợ lập trình hướng đối tượng (OOP) không?
- TypeScript cũng hỗ trợ tốt các mẫu lập trình hàm
- Ví dụ,
discriminated unionthường được dùng trong lập trình hàm
Có bắt buộc phải học các định nghĩa kiểu phức tạp không?
- Trong phần lớn trường hợp, chỉ cần các định nghĩa kiểu đơn giản là đủ để dùng TypeScript
- Các định nghĩa kiểu phức tạp hữu ích khi viết thư viện, nhưng không cần thiết trong sử dụng thông thường
Học TypeScript mất bao lâu?
- Có thể học các khái niệm cơ bản chỉ trong một ngày
- Sang ngày hôm sau đã có thể viết và debug mã đơn giản
- Sau đó có thể học dần các kiểu phức tạp và tính năng nâng cao
Tài liệu nên đọc tiếp
- What is TypeScript?
- Tackling TypeScript (miễn phí)
4 bình luận
Có lợi ích từ kiểu mạnh, C++ cũng vậy
Dùng JavaScript -> TypeScript thì cảm giác như đang nhắm mắt phát triển rồi bỗng mở mắt ra. Sự yên tâm mà kiểu dữ liệu mang lại, tự động hoàn thành và sự kết hợp với Copilot
Các nhóm trong công ty chúng tôi từng nói chỉ cần JavaScript là đủ rồi và làm dự án như vậy, nhưng giờ đang đồng loạt chuyển hết sang TypeScript.
Điều này dường như là yếu tố thành công giúp TypeScript đánh bại Dart: nó không thay thế JavaScript mà bổ trợ cho nó. Tôi thực sự thấy thật may vì mình đã học nó.