[TypeScript] lookup ค่าใน object ด้วย key ที่มี type เป็น keyof type

ถ้าเราใช้ JavaScript โดยตรงเราสามารถ access property ใน object ได้โดยใช้ dot . หรือใช้ indexing operator [property_name] แบบนี้ แต่พอเป็น TypeScript ตอนเราใช้ indexing operator จะฟ้องว่าเราใส่ผิด type เราต้อง convert string ที่เราใส่ตรง [] เป็น type ของ key ของ object ก่อนด้วย keyof ตัวอย่างโค้ดง่ายๆเช่น type Point = { x: number; y: number }; type P = keyof Point; const p: Point = { x: 10, y: 20 }; const y: string = "y"; console.log(p[y]); เราจะโดน compiler แจ้ง type error ว่า
Read full post gblog_arrow_right

[TypeScript] อ้างอิง type จาก property ของ type อื่นด้วยท่า indexed access type

บางค่าของ TypeScript เราต้องระบุ callback function ซึ่ง type ของ callback function ก็มี parameter ที่ต้องเหมือนกัน แทนที่เราจะต้องจำและใส่ให้ตรงเอง เราสามารถใช้ indexed access type ช่วยอ้างอิง type ของ property ที่เป็น callback function ได้เลย

Read full post gblog_arrow_right

[Go] ใช้ reflect ดึงข้อมูล parameter type และ return type ของ function

เมื่ออาทิตย์ที่ผ่านมาเจอ package นึงชื่อ tonic ช่วยในการเขียน Gin handler ให้มี request parameter และ return type ได้ เลยไปขุดดูว่าทำได้ยังไง เจอว่าใช้ reflect ในการหาข้อมูลของ handler function นั่นเองว่ารับ type อะไร หรือ return type อะไร

Read full post gblog_arrow_right

[C++] ใช้ CPU ให้เต็มที่ด้วย Boost Thread Pool

เมื่อวานมีงานที่ต้อง process ข้อมูลบางอย่างด้วย C++ เลยพยายามใช้ CPU ให้เต็มที่ทุก cores เท่าที่มีให้มากสุด ซึ่งก็ได้มาท่านึงก็คือใช้ library Boost Thread Pool เข้าช่วย

Read full post gblog_arrow_right

[React] จะ dispatch event ให้ DOM ที่สร้างจาก React ต้องกำหนด bubbles เป็น true เสมอ

เพิ่งเจอว่า DOM ที่ได้จาก React แม้ว่าเราจะ binding Event ผ่าน JSX มาแล้วแต่เราจะ query DOM มาแล้วสั่ง dispatchEvent เลยไม่ได้ ต้องกำหนด option bubbles ของ Event object ให้เป็น true เสมอ

Read full post gblog_arrow_right

[Go] Parse CSV/Excel columns ด้วย named constant และ map แทนที่จะใช้ index โดยตรง

ช่วงนี้มี usecase ที่ต้อง parse ข้อมูลจาก Excel แต่ว่าบ้างครั้งลำดับของ column ก็มีเปลี่ยนไป มีเพิ่ม มีลดกันบ้าง เลยได้ลองคิดท่าใหม่เพื่อให้โค้ดในการ parse ไม่ต้องแก้เยอะเพราะลำดับของ column เปลี่ยน ซึ่งก็คือใช้ constant และ map มาช่วยนั่นเอง

Read full post gblog_arrow_right

[JavaScript] ความต่างระหว่างใช้ Promise.all กับ for แล้ว await ทีละอัน

ถ้าเรามีหลาย async call แล้วอยากรอให้ทำงานเสร็จหมดก่อนค่อยไปต่อ มีสองท่าที่นึกออกคือใช้ Promise.all และ for แล้ว await ทีละอัน ซึ่งมันจะมีพฤติกรรมต่างกันอยู่ ขอบันทึกเอาไว้หน่อย

Read full post gblog_arrow_right