Các loại đặc biệt của TypeScript
TypeScript có các loại đặc biệt có thể không đề cập đến bất kỳ loại dữ liệu cụ thể nào.
Loại: bất kỳ
any
là loại vô hiệu hóa việc kiểm tra loại và cho phép sử dụng tất cả các loại một cách hiệu quả.
Ví dụ bên dưới không sử dụng any
và sẽ báo lỗi:
Ví dụ không any
let u = true;
u = "string"; // Error: Type 'string' is not assignable to type 'boolean'.
Math.round(u); // Error: Argument of type 'boolean' is not assignable to parameter of type 'number'.
Hãy tự mình thử » Đặt any
thành loại đặc biệt any
sẽ vô hiệu hóa việc kiểm tra loại:
Ví dụ với any
let v: any = true;
v = "string"; // no error as it can be "any" type
Math.round(v); // no error as it can be "any" type
Hãy tự mình thử » any
có thể là một cách hữu ích để vượt qua các lỗi vì nó vô hiệu hóa việc kiểm tra kiểu, nhưng TypeScript sẽ không thể cung cấp sự an toàn về kiểu và các công cụ dựa trên dữ liệu kiểu, chẳng hạn như tự động hoàn thành, sẽ không hoạt động. Hãy nhớ rằng, nên tránh nó bằng bất cứ giá nào...
Loại: không rõ
unknown
là một giải pháp thay thế tương tự nhưng an toàn hơn cho any
.
TypeScript sẽ ngăn việc sử dụng các loại unknown
, như trong ví dụ bên dưới:
let w: unknown = 1;
w = "string"; // no error
w = {
runANonExistentMethod: () => {
console.log("I think therefore I am");
}
} as { runANonExistentMethod: () => void}
// How can we avoid the error for the code commented out below when we don't know the type?
// w.runANonExistentMethod(); // Error: Object is of type 'unknown'.
if(typeof w === 'object' && w !== null) {
(w as { runANonExistentMethod: Function }).runANonExistentMethod();
}
// Although we have to cast multiple times we can do a check in the if to secure our type and have a safer casting
Hãy tự mình thử » So sánh ví dụ trên với ví dụ trước, với any
.
unknown
được sử dụng tốt nhất khi bạn không biết loại dữ liệu được nhập. Để thêm một loại sau này, bạn sẽ cần truyền nó.
Truyền là khi chúng ta sử dụng từ khóa "as" để nói thuộc tính hoặc biến thuộc loại được truyền.
Được chứng nhận!
$45 ĐĂNG KÝ
Kiểu: không bao giờ
never
đưa ra lỗi một cách hiệu quả bất cứ khi nào nó được xác định.
let x: never = true; // Error: Type 'boolean' is not assignable to type 'never'.
Hãy tự mình thử » never
hiếm khi được sử dụng, đặc biệt là sử dụng riêng lẻ, công dụng chính của nó là trong các thuốc generic tiên tiến.
Loại: không xác định & null
undefined
và null
là các loại tham chiếu đến các nguyên hàm JavaScript undefined
và null
tương ứng.
let y: undefined = undefined;
let z: null = null;
Hãy tự mình thử » Những loại này không được sử dụng nhiều trừ khi strictNullChecks
được bật trong tệp tsconfig.json
.