"แคสติ้ง" นั้นแตกต่างจากการแปลง ในกรณีนี้window.location.hashจะแปลงตัวเลขเป็นสตริงโดยอัตโนมัติ แต่เพื่อหลีกเลี่ยงข้อผิดพลาดในการรวบรวม TypeScript คุณสามารถทำการแปลงสตริงได้ด้วยตัวเอง:
window.location.hash = ""+page_number;
window.location.hash = String(page_number);
การแปลงเหล่านี้เหมาะอย่างยิ่งถ้าคุณไม่ต้องการให้เกิดข้อผิดพลาดจะถูกโยนเมื่อpage_numberเป็นหรือnull undefinedในขณะที่page_number.toString()และpage_number.toLocaleString()จะโยนเมื่อpage_numberเป็นหรือnullundefined
เมื่อคุณต้องการแคสต์เท่านั้นไม่แปลงนี่คือวิธีแคสต์เป็นสตริงใน TypeScript:
window.location.hash = <string>page_number;
// or
window.location.hash = page_number as string;
<string>หรือas stringคำอธิบายประกอบโยนบอกคอมไพเลอร์ typescript ในการรักษาpage_numberเป็นสตริงที่รวบรวมเวลานั้น มันไม่ได้แปลงในเวลาทำงาน
อย่างไรก็ตามคอมไพเลอร์จะบ่นว่าคุณไม่สามารถกำหนดตัวเลขให้กับสตริงได้ คุณจะต้องโยนก่อน<any>แล้วจึงไปที่<string>:
window.location.hash = <string><any>page_number;
// or
window.location.hash = page_number as any as string;
ดังนั้นง่ายกว่าที่จะแปลงซึ่งจัดการประเภท ณ เวลารันไทม์และเวลาคอมไพล์:
window.location.hash = String(page_number);
(ขอบคุณ @RuslanPolutsygan สำหรับการจับปัญหาการส่งหมายเลขสตริง)
page_numberเป็นnullนี้จะตั้งค่าwindow.location.hashการ *"null"สตริง (ฉันต้องการข้อผิดพลาด: D)