Review mã TypeScriptĐào tạo lập trình

Review mã TypeScript: kiểu, cấu trúc và lỗi

Bàn giao từ 1 ngàyBao gồm chỉnh sửaKiểm tra chất lượng
Các gói
Bảo vệ thanh toánChi tiết
  • Chỉnh sửa trong phạm vi gói là miễn phí.
  • Nếu bạn không phản hồi trong vòng 3 ngày sau khi bàn giao, kết quả sẽ được tự động chấp nhận.
Đặt hàng · 949.000 ₫

Số tiền được tạm giữ khi bạn thanh toán và chỉ được chuyển khi bạn chấp nhận kết quả.

Review mã TypeScript: kiểu, cấu trúc và lỗi

Ví dụ kết quả

Ví dụ cho gói Tiêu chuẩn

Review code: script Python nhập đơn hàng cho shop online nhỏ

Code đang làm gì

  1. Đọc orders.csv xuất từ shop.
  2. Với mỗi dòng đơn, tìm sản phẩm theo SKU trong stock.xlsx và trừ số lượng.
  3. Ghi lại tồn kho mới và lưu tổng kết vào import_log.txt.

Cấu trúc rõ ràng, tên hàm đặt tốt. Phần lớn lỗi đến từ dữ liệu đầu vào không giống như script mong đợi.

Lỗi và điểm yếu

#DòngMức độVấn đề
148CaoCùng một file CSV có thể bị nhập hai lần; không kiểm tra mã đơn đã xử lý. Đây là nguyên nhân khả dĩ nhất khiến tồn kho âm.
272Caoint(row["qty"]) crash khi gặp giá trị rỗng hoặc "2.0" từ đơn hoàn tiền.
395Trung bìnhTìm SKU phân biệt hoa thường: "gt-101" và "GT-101" bị coi là hai sản phẩm khác nhau.
4130Trung bìnhMở file không có encoding="utf-8", tên sản phẩm có dấu tiếng Việt bị lỗi trên Windows.
5201Thấpexcept: trống che mất lỗi thật, khiến log vô dụng.

Đoạn code đã sửa

Lỗi 1: bỏ qua đơn đã nhập

processed = load_processed_ids("processed_orders.txt")
for row in reader:
    if row["order_id"] in processed:
        continue
    # ... logic hiện có ...
    processed.add(row["order_id"])
save_processed_ids("processed_orders.txt", processed)

Lý do: mỗi đơn chỉ được trừ kho một lần, kể cả khi chạy lại script trên cùng file.

Lỗi 2: đọc số lượng an toàn

raw = (row.get("qty") or "").strip()
try:
    qty = int(float(raw))
except ValueError:
    log.warning("Đơn %s: số lượng %r không hợp lệ, bỏ qua", row["order_id"], raw)
    continue

Lý do: dòng hoàn tiền hoặc hoàn một phần được bỏ qua kèm ghi chú rõ ràng, thay vì dừng cả lượt nhập.

Lỗi 3: chuẩn hóa SKU

sku = row["sku"].strip().upper()

Áp dụng .strip().upper() tương tự khi tạo dictionary tồn kho.

Phong cách và khả năng đọc

  • process() dài 90 dòng; nên tách thành read_orders, apply_to_stock, write_report.
  • Thay số cột cố định (row[7]) bằng tên tiêu đề cột.

Hãy thử từng chỗ sửa trên bản sao file của bạn: chúng tôi đã đọc code nhưng chưa chạy thử.

Khách hàng: chủ một shop trà online, tự viết script Python 310 dòng để nhập đơn từ file CSV xuất từ shop vào bảng tồn kho Vấn đề gặp phải: "Thỉnh thoảng tồn kho bị âm, và script bị crash với một số file."

Khách hàng và mọi thông tin đều là giả định.

Về dịch vụ này

TypeScript chỉ bảo vệ bạn khi kiểu dữ liệu nói đúng những gì mã thực sự làm, trong khi nhiều dự án dần đầy any, ép kiểu không kiểm tra và các trường tùy chọn chẳng bao giờ thực sự tùy chọn. Chúng tôi đọc mã và định nghĩa kiểu của bạn, giải thích lỗi trình biên dịch đang làm bạn bế tắc, và chỉ ra nơi thu hẹp kiểu, union type hay một generic nhỏ có thể thay cho phép ép kiểu. Các đoạn mã đã sửa luôn tính đến strict mode, để bản sửa vẫn đứng vững khi trình biên dịch chặt hơn.

Bao gồm những gì

  • Bạn nhận được gìBản review bằng văn bản trên trang đơn hàng: giải thích lỗi trình biên dịch, danh sách kiểu yếu theo mức rủi ro và các đoạn mã đã sửa với định nghĩa kiểu tốt hơn. Gói Cao cấp có thêm kế hoạch bật dần các tùy chọn trình biên dịch nghiêm ngặt hơn.
  • Giải mã lỗi trình biên dịchThông báo dài bằng lời dễ hiểu
  • Bớt any và ép kiểuKiểu an toàn hơn thay vào chỗ đó
  • Thu hẹp kiểu và unionĐể trình biên dịch kiểm tra các nhánh
  • Interface và genericĐịnh nghĩa kiểu dễ đọc, dùng lại được
  • Đoạn mã đã sửaKèm ghi chú cho từng thay đổi

Cách hoạt động

  1. 1
    Yêu cầuBạn dán mã, kiểu và lỗi
  2. 2
    ĐọcChúng tôi đối chiếu kiểu với hành vi thực
  3. 3
    Đánh giáBạn nhận giải thích và kiểu tốt hơn

Chúng tôi cần gì từ bạn

Mã TypeScript và các kiểu dán dạng văn bản hoặc ảnh chụp màn hình, thiết lập tsconfig, phiên bản TypeScript và chính xác các lỗi trình biên dịch.

Chúng tôi sẽ hỏi bạn:

  • Phiên bản TypeScript và framework nào?
  • Strict mode có đang bật không?
  • Lỗi trình biên dịch hay vấn đề kiểu nào đang cản bạn?
  • Bạn có đang chuyển dự án JavaScript sang TypeScript không?

So sánh các gói

Các góiCơ bảnMã tối đa 100 dòng407.000 ₫Tiêu chuẩnMã tối đa 400 dòng949.000 ₫Cao cấpTối đa 1.000 dòng kèm kế hoạch tăng độ nghiêm ngặt1.870.000 ₫
Thời hạn1 ngày2 ngày3 ngày
Số lần chỉnh sửa123
Số dòng codetối đa 100tối đa 400tối đa 1.000
Đoạn code đã sửaCóCóCó
Kế hoạch tăng độ nghiêm ngặtKhôngKhôngCó
Đặt hàng Cơ bảnĐặt hàng Tiêu chuẩnĐặt hàng Cao cấp

Bảo vệ thanh toán

Bạn thanh toán khi đặt hàng, nhưng tiền chỉ được chuyển cho kết quả đã được chấp nhận.

  • Giá cố địnhGiá gói không thay đổi sau khi bạn thanh toán.
  • Số tiền được tạm giữKhi bạn thanh toán, số tiền chỉ được tạm giữ. Tiền được chuyển cho dịch vụ khi bạn chấp nhận kết quả.
  • Kiểm tra trước khi bàn giaoMọi kết quả đều được kiểm tra chất lượng trước khi đến tay bạn, và bạn xem được kết quả trên trang đơn hàng trước khi chấp nhận.
  • Chỉnh sửa miễn phíYêu cầu chỉnh sửa trong phạm vi bản yêu cầu của bạn, với số lần mà gói cho phép.
  • Tự động chấp nhận sau 3 ngàyNếu trong vòng 3 ngày sau khi bàn giao, bạn không chấp nhận kết quả cũng không yêu cầu chỉnh sửa, kết quả sẽ được tự động chấp nhận. Nếu bạn nhắn tin trong chat đơn hàng sau khi bàn giao, đơn hàng sẽ chờ; sau khi trả lời, chúng tôi có thể tính lại 3 ngày từ đầu và sẽ thông báo trong chat.
  • Làm lại hoặc hoàn tiền toàn bộNếu kết quả không đúng với yêu cầu của bạn và các lần chỉnh sửa không khắc phục được, hoặc công việc kéo dài quá gấp đôi thời hạn, hãy nhắn tin trong chat đơn hàng: chúng tôi sẽ làm lại hoặc hoàn tiền toàn bộ.
Cách hoạt động →

Hỏi đáp

Các bạn có chạy mã của tôi không?

Không. Chúng tôi đọc kỹ và suy luận cách mã hoạt động nhưng không chạy nó, vì vậy hãy kiểm tra mọi bản sửa được đề xuất trong dự án của bạn.

Các bạn chỉ cần bảo tôi cách tắt lỗi được không?

Được, nhưng trước hết chúng tôi cho thấy lỗi đó đang bảo vệ bạn khỏi điều gì, và đưa ra cách sửa có kiểu rõ ràng nếu có.

Các bạn có giúp chuyển từ JavaScript sang không?

Có. Hãy dán các tệp bạn đang chuyển đổi, chúng tôi gợi ý kiểu dữ liệu và thứ tự chuyển đổi.

Các gói
Đặt hàng · 949.000 ₫· 2 ngày