ทั้งสองสามารถเก็บ ค่า ใดๆ ได้ แต่แตกต่างกันใน ความปลอดภัย any ปิดการตรวจสอบประเภท; unknown เปิดใช้ไว้และบังคับให้คุณแคบลงก่อนใช้งาน
ts
: = ;
a..;
();
: = ;
u.();
();
ทั้งสองสามารถเก็บ ค่า ใดๆ ได้ แต่แตกต่างกันใน ความปลอดภัย any ปิดการตรวจสอบประเภท; unknown เปิดใช้ไว้และบังคับให้คุณแคบลงก่อนใช้งาน
: = ;
a..;
();
: = ;
u.();
();
function handle(input: unknown) {
if (typeof input === "string") {
input.toUpperCase(); // ✅ inside the guard, TS knows it's a string
}
}
unknown คือ คู่ที่ปลอดภัยจากประเภทของ any: คุณสามารถกำหนด ถึง มันได้ แต่คุณไม่สามารถ ทำ อะไรกับมันได้จนกว่าคุณจะพิสูจน์ว่ามันคืออะไรผ่านเครื่องหมายประเภท
unknown — สำหรับค่าประเภทที่แท้จริงไม่ทราบที่ขอบเขต: ผลลัพธ์ JSON.parse การตอบสนอง API catch (e: unknown) มันบังคับให้มีการตรวจสอบความถูกต้องany — ประตูทางออกเมื่อย้าย JS หรือเมื่อคุณไม่สามารถระบุประเภทบางอย่างได้จริงๆ ใช้ยาว; มันแพร่กระจายอย่างเงียบและปิดใช้งานความปลอดภัยการเข้าถึง any ทำให้วัตถุประสงค์ของ TypeScript ล้มเหลว
ชอบ unknown ที่ขอบเขตที่ไม่ระบุประเภท — มันเก็บรักษาการรับประกันของคอมไพเลอร์ในขณะที่ยังคงยอมรับอินพุตตามอำเภอใจ ทำให้คุณตรวจสอบข้อมูลก่อนที่จะเชื่อถือมัน