Bỏ qua

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:

  1. Cập nhật tất cả các file import và sử dụng các interface này
  2. Cập nhật các file TypeORM entities nếu có sử dụng
  3. 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ế any bằng types cụ thể
  • Sử dụng unknown nế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

  1. Mở từng file interface
  2. Đổi tên interface từ I* sang không có I
  3. Tìm và thay thế tất cả references

Option 2: Sử dụng Find & Replace trong IDE

  1. Tìm: interface I(\w+)
  2. Thay: interface $1
  3. Tìm: : I(\w+)
  4. 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 ý

  1. Backup code trước khi sửa: Đảm bảo commit hoặc stash code hiện tại
  2. Test sau khi sửa: Chạy yarn buildyarn test để đảm bảo không có lỗi runtime
  3. Sửa từng bước: Sửa từng interface một và test để tránh lỗi cascade