any พิมพ์:
anyประเภทแทนค่า JS เป็นไปได้ทั้งหมด ทุกประเภทสามารถกำหนดให้พิมพ์anyได้ ดังนั้นประเภทanyจึงเป็น supertype สากลของระบบประเภท คอมไพเลอร์ทีเอสจะช่วยให้การดำเนินการใด ๆ anyเกี่ยวกับค่าพิมพ์ ตัวอย่างเช่น:
let myVar: any;
myVar[0];
myVar();
myVar.length;
new myVar();
ในหลาย ๆ ครั้งนี่เป็นเรื่องอ่อนโยนเกินไปสำหรับคอมไพเลอร์ TS นั่นคือจะช่วยให้การดำเนินงานที่เราอาจจะรู้ว่าเป็นผลให้เกิดข้อผิดพลาด runtime
unknown พิมพ์:
unknownประเภทหมายถึง (เช่นเดียวany) เป็นไปได้ที่ค่า JS ทั้งหมด ทุกประเภทสามารถกำหนดให้พิมพ์unknownได้ ดังนั้นประเภทunknownจึงเป็น supertype สากลอื่นของระบบประเภท (ด้านข้างany) แต่คอมไพเลอร์ทีเอสจะไม่อนุญาตให้มีการดำเนินการใด ๆ unknownกับค่าพิมพ์ นอกจากนี้unknownประเภทสามารถกำหนดให้กับประเภทanyได้เท่านั้น ตัวอย่างจะอธิบายสิ่งนี้:
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เป็นเหมือนdynamicและเป็นเหมือนunknownobjectฉันชอบunknownเพราะมันปลอดภัยกว่า แม้ว่าชื่อที่สับสน