2017-06-07 15 views
6

Trong nguyên cảo, khi có mã unreachable, trình biên dịch tạo ra bởi lỗi mặc định:Cảnh báo biên dịch "Không thể truy cập mã không thể truy cập" thay vì lỗi trong TypeScript?

error TS7027: Unreachable code detected. 

tôi có thể tránh nó bằng cách sử dụng trình biên dịch tùy chọn allowUnreachableCode để true nhưng tôi có thể thay đổi nó bằng cách nào đó để cảnh báo?

Tôi vẫn muốn biết về mã không thể truy cập được. Trong quá trình phát triển và gỡ lỗi, đôi khi tôi sử dụng if (false) để tạm thời xóa một số chức năng, tốt hơn là bình luận mã ra đặc biệt là khi chính mã đó chứa nhận xét.

Trong C#, mã không thể truy cập tạo cảnh báo (mà tôi có thể coi là lỗi theo tùy chọn khác), điều này dường như là cách tốt hơn để xử lý nó.

+3

Ngay cả khi trình biên dịch tìm lỗi, nó vẫn sẽ phát ra kết quả js, trừ khi bạn đang sử dụng cờ '--noEmitOnError'. Vì vậy, bạn có thể xem các lỗi như cảnh báo –

+0

@NitzanTomer điểm tốt. Và mặc dù thông báo 'webpack: Failed to compile.' có vẻ như lỗi không dừng webpack để xây dựng gói – eXavier

+0

bạn có thể đặt biến toàn cầu luôn luônFalse = false; và trong typescript tuyên bố var (do đó làm cho trình biên dịch Typecript không biết rằng nó luôn luôn là sai) và sau đó làm nếu (alwaysFalse) thay vì nếu (false) –

Trả lời

1

Câu trả lời kể từ thời điểm viết là "không", không thể đưa ra cảnh báo; như bạn đã nói, đó là "lỗi" hoặc "không có gì". This Github issue tồn tại để cho phép các lỗi được cấu hình thành cảnh báo, điều này sẽ cho phép điều này được đưa vào cảnh báo. Hy vọng nó sẽ sớm được triển khai.

1

Trong trường hợp đặc biệt tạm thời loại bỏ chức năng (mà tôi nghĩ là trường hợp chính, nơi người ta sẽ muốn có mã unreachable), viết

if(<any>false) { 
    // unused code goes here 
} 

sẽ ngăn chặn các trình biên dịch nguyên cảo từ phàn nàn, cung cấp cho ECMAScript thời gian chạy thực thi một cơ hội khá tốt để tối ưu hóa mã.

Ngoài ra,

if(0) { 
    // unused code goes here 
} 

sẽ được chấp nhận bởi các ngôn ngữ nguyên cảo, nhưng vẫn sẽ kích hoạt một "điều kiện liên tục bất ngờ" cảnh báo từ tslint.

+0

Đây là một câu trả lời xấu. Câu hỏi được hỏi liệu nó có thể là CẢNH BÁO hay không, không phải là liệu có thể tránh được lỗi hoàn toàn không. – Jez

+0

@Jez: Đề xuất thứ hai sẽ tạo ra cảnh báo linter. –

Các vấn đề liên quan