any
kiểu:
Các any
loại đại diện cho tất cả các giá trị JS càng tốt. Mỗi loại được gán để gõ any
. Do đó, loại any
này là một siêu kiểu phổ quát của hệ thống loại. Trình biên dịch TS sẽ cho phép mọi thao tác trên các giá trị được nhập any
. Ví dụ:
let myVar: any;
myVar[0];
myVar();
myVar.length;
new myVar();
Trong nhiều trường hợp, điều này là quá khoan dung của trình biên dịch TS. tức là nó sẽ cho phép các hoạt động mà chúng ta có thể đã biết dẫn đến lỗi thời gian chạy.
unknown
kiểu:
Các unknown
loại đại diện (giống như any
) tất cả các giá trị JS càng tốt. Mỗi loại được gán để gõ unknown
. Do đó, loại unknown
này là một siêu kiểu phổ quát khác của hệ thống loại (cùng với any
). Tuy nhiên, trình biên dịch TS sẽ không cho phép bất kỳ thao tác nào trên các giá trị được nhập unknown
. Hơn nữa, unknown
loại chỉ được gán cho loại any
. Một ví dụ sẽ làm rõ điều này:
let myVar: unknown;
let myVar1: unknown = myVar; // No error
let myVar2: any = myVar; // No error
let myVar3: boolean = myVar; // Type 'unknown' is not assignable to type 'boolean'
// The following operations on myVar all give the error:
// Object is of type 'unknown'
myVar[0];
myVar();
myVar.length;
new myVar();
any
đều thíchdynamic
vàunknown
thíchobject
. Tôi thíchunknown
vì nó chỉ là loại an toàn hơn. Tên khó hiểu mặc dù.