noImplicitAny
noImplicitAny là compiler option cấm any type ngầm định.
- Mặc định:
truenếu strict được bật, ngược lại làfalse - Phiên bản thêm vào: -
- TypeScript khuyến nghị nên bật
Vấn đề của any ngầm định
Khi không có type annotation và không thể type inference, TypeScript sẽ đặt type của biến là any. Điều này được gọi là any ngầm định. Đặc biệt, any ngầm định thường xảy ra ở tham số và property.
Ví dụ xảy ra any ngầm địnhtsfunctionfoo (param ) {}classBar {privateprop ;}
Ví dụ xảy ra any ngầm địnhtsfunctionfoo (param ) {}classBar {privateprop ;}
Biến có type là any không được type check nên nguy cơ bug tăng cao.
tsfunctionincrement (number ) {console .log (number + 1);}increment ("1");increment (undefined );
tsfunctionincrement (number ) {console .log (number + 1);}increment ("1");increment (undefined );
Ngăn chặn any ngầm định với noImplicitAny
Đặt noImplicitAny thành true để tránh biến trở thành any ngầm định. TypeScript sẽ cảnh báo khi phát hiện biến có any ngầm định.
Ví dụ any ngầm định được cảnh báotsfunctionParameter 'param' implicitly has an 'any' type.7006Parameter 'param' implicitly has an 'any' type.foo () {} param classBar {privateMember 'prop' implicitly has an 'any' type.7008Member 'prop' implicitly has an 'any' type.; prop }
Ví dụ any ngầm định được cảnh báotsfunctionParameter 'param' implicitly has an 'any' type.7006Parameter 'param' implicitly has an 'any' type.foo () {} param classBar {privateMember 'prop' implicitly has an 'any' type.7008Member 'prop' implicitly has an 'any' type.; prop }
Type của return value của function
Return value của function trong nhiều trường hợp được infer nên không trở thành any ngầm định. Do đó, ngay cả khi không có type annotation cho return value, noImplicitAny cũng không cảnh báo (đối tượng của noImplicitAny chỉ là "any ngầm định").
tsfunctionfoo () {return 1;}
tsfunctionfoo () {return 1;}
Chia sẻ kiến thức
😢TypeScript đặt type thành any khi không có type annotation HOẶC không thể type inference (any ngầm định)
🙅♂️noImplicitAny là compiler option cấm any ngầm định
😊Đặt thành true để cảnh báo any ngầm định
✅Option khuyến nghị nên bật
Từ 『Survival TypeScript』
Thông tin liên quan
📄️ strict
Bật hàng loạt các option thuộc nhóm strict
📄️ Kiểu any
Kiểu any trong TypeScript là kiểu cho phép gán bất kỳ giá trị nào. Dù là primitive type hay object, bạn có thể gán gì vào cũng không gây lỗi.
📄️ Function declaration
Function declaration là cú pháp để định nghĩa function trong JavaScript.
📄️ Field
Để instance có field trong JavaScript, gán giá trị cho property của object đã instance hóa.