Hướng dẫn sửa các lỗi linting còn lại
Tóm tắt
Sau khi cấu hình ESLint import resolver, số lỗi đã giảm từ hơn 200 errors xuống còn 7 errors về interface naming.
Các lỗi cần sửa ngay (7 errors)
1. Interface naming - Không được bắt đầu bằng "I"
Nguyên nhân: ESLint rule @typescript-eslint/naming-convention không cho phép interface bắt đầu bằng chữ "I" (theo TypeScript best practices).
Các file cần sửa:
libs/shared/src/interfaces/booking.interface.ts
// ❌ SAI
export interface IBooking { ... }
// ✅ ĐÚNG
export interface Booking { ... }
libs/shared/src/interfaces/field.interface.ts
// ❌ SAI
export interface IField { ... }
export interface ITimeSlot { ... }
// ✅ ĐÚNG
export interface Field { ... }
export interface TimeSlot { ... }
libs/shared/src/interfaces/payment.interface.ts
// ❌ SAI
export interface IPayment { ... }
export interface ITransaction { ... }
// ✅ ĐÚNG
export interface Payment { ... }
export interface Transaction { ... }
libs/shared/src/interfaces/user.interface.ts
// ❌ SAI
export interface IUser { ... }
export interface IUserProfile { ... }
// ✅ ĐÚNG
export interface User { ... }
export interface UserProfile { ... }
Lưu ý: Sau khi đổi tên interface, bạn cần:
- Cập nhật tất cả các file import và sử dụng các interface này
- Cập nhật các file TypeORM entities nếu có sử dụng
- Cập nhật các DTOs nếu có extends từ các interface này
Các warnings có thể sửa sau
1. Missing JSDoc descriptions (nhiều warnings)
- Thêm JSDoc comments cho các class, function, method
- Có thể sửa từ từ theo từng file
2. Unsafe any types (warnings)
- Thay thế
anybằng types cụ thể - Sử dụng
unknownnếu không biết type chính xác
3. Missing return types (warnings)
- Thêm return type cho các function
4. Import order (warnings)
- ESLint sẽ tự động sửa khi chạy
yarn lint:fix
Cách sửa nhanh
Option 1: Sửa thủ công từng file
- Mở từng file interface
- Đổi tên interface từ
I*sang không cóI - Tìm và thay thế tất cả references
Option 2: Sử dụng Find & Replace trong IDE
- Tìm:
interface I(\w+) - Thay:
interface $1 - Tìm:
: I(\w+) - Thay:
: $1
Option 3: Tạm thời disable rule (không khuyến khích)
Nếu muốn giữ nguyên tên interface, có thể tạm thời disable rule:
"@typescript-eslint/naming-convention": [
"error",
{
"selector": "interface",
"format": ["PascalCase"],
// Bỏ custom regex check
}
]
Script tự động sửa (tùy chọn)
Bạn có thể tạo script để tự động đổi tên:
# Tìm tất cả interface bắt đầu bằng I
find libs/shared/src/interfaces -name "*.ts" -exec grep -l "interface I" {} \;
# Sau đó sửa thủ công hoặc dùng sed
Kết quả mong đợi
Sau khi sửa 7 lỗi interface naming:
- ✅ Không còn errors
- ⚠️ Còn warnings (có thể sửa từ từ)
- ✅ Code có thể commit được (nếu chỉ check errors)
Lưu ý
- Backup code trước khi sửa: Đảm bảo commit hoặc stash code hiện tại
- Test sau khi sửa: Chạy
yarn buildvàyarn testđể đảm bảo không có lỗi runtime - Sửa từng bước: Sửa từng interface một và test để tránh lỗi cascade