"แคสติ้ง" นั้นแตกต่างจากการแปลง ในกรณีนี้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
เป็นหรือnull
undefined
เมื่อคุณต้องการแคสต์เท่านั้นไม่แปลงนี่คือวิธีแคสต์เป็นสตริงใน 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)