ชนิดของ Flag
value type ทั้งสี่แบบ
หัวข้อที่มีชื่อว่า “value type ทั้งสี่แบบ”เมื่อคุณสร้าง Feature ใน GrowthBook คุณจะเลือก value type หนึ่งในสี่แบบ ชนิดนี้เป็นแบบถาวร — คุณเปลี่ยนไม่ได้หลังจากสร้างไปแล้ว ดังนั้นเลือกอย่างตั้งใจ
Boolean
หัวข้อที่มีชื่อว่า “Boolean”ชนิดที่ง่ายที่สุด: true หรือ false
ใช้เมื่อคุณต้องการประตูเปิด/ปิดแบบง่าย ๆ — แสดง UI ใหม่, เปิดใช้วิธีการชำระเงิน, ปลดล็อกฟีเจอร์ beta
if (gb.isOn('dark-mode')) { enableDarkMode();}
// or with explicit fallback:const isDark = gb.getFeatureValue('dark-mode', false);ค่าข้อความที่ SDK คืนกลับมาตามเดิม
ใช้เมื่อคุณต้องการปรับเปลี่ยนข้อความ, เลือกชื่อ variant หรือคืนค่าสตริงสำหรับ configuration
const buttonLabel = gb.getFeatureValue('cta-text', 'Get started');// returns 'Get started', 'Try for free', 'Sign up now', etc.ค่าตัวเลข (จำนวนเต็มหรือทศนิยม)
ใช้เมื่อคุณต้องการปรับ threshold, ราคา, limit หรือเปอร์เซ็นต์ โดยไม่ต้อง deploy โค้ด
const maxItems = gb.getFeatureValue('cart-max-items', 10);// returns 10, 20, 50, etc.ออบเจกต์หรืออาร์เรย์ JSON ตามที่ต้องการ
ใช้เมื่อคุณต้องการส่งก้อน configuration ทั้งก้อน — สีของปุ่ม, ระดับราคา, ตัวเลือกการจัด layout ของ UI — เป็น flag เดียว
const theme = gb.getFeatureValue('ui-theme', { color: 'blue', size: 'md' });// theme.color, theme.size come from GrowthBookargument สำหรับ fallback ของ getFeatureValue ต้องเป็นออบเจกต์ JS ที่ถูกต้องและตรงกับรูปร่างที่คุณคาดหวังจาก GrowthBook ถ้า GrowthBook เข้าถึงไม่ได้ แอปของคุณก็ยังทำงานได้ด้วย fallback
เปรียบเทียบชนิดต่าง ๆ แบบรวดเร็ว
หัวข้อที่มีชื่อว่า “เปรียบเทียบชนิดต่าง ๆ แบบรวดเร็ว”| ชนิด | ค่าที่ SDK คืน | เหมาะกับ |
|---|---|---|
| Boolean | true / false | feature gate, kill switch |
| String | สตริงใด ๆ | ปรับเปลี่ยนข้อความ, ชื่อ layout |
| Number | ตัวเลขใด ๆ | threshold, limit, ราคา |
| JSON | ออบเจกต์หรืออาร์เรย์ใด ๆ | ชุด config, การตั้งค่าหลายคุณสมบัติ |
Hoisted SDK snippet — JSON flag
หัวข้อที่มีชื่อว่า “Hoisted SDK snippet — JSON flag”import { GrowthBook } from '@growthbook/growthbook';
const gb = new GrowthBook({
apiHost: 'https://cdn.growthbook.io',
clientKey: 'sdk-YOUR_DEV_KEY',
});
await gb.init({ timeout: 2000 });
// JSON flag — always pass a complete fallback object
const config = gb.getFeatureValue('ui-theme', { color: 'blue', size: 'md' });
console.log(config.color); // 'blue' or whatever GrowthBook returns
console.log(config.size); // 'md' or whatever GrowthBook returnsข้อแลกเปลี่ยน
หัวข้อที่มีชื่อว่า “ข้อแลกเปลี่ยน”| ประเภท | ประโยชน์ | ต้นทุน |
|---|---|---|
| Boolean | ง่ายสุด เข้าใจทันที | ใช้ได้กับ on/off เท่านั้น |
| String / Number | ทำ multi-variant ได้ | ต้องจัดการหลายค่ามากกว่า boolean |
| JSON | flexible สุด ปรับ config ซับซ้อนได้ | ผู้ใช้ต้อง parse/validate เอง เสี่ยง runtime error |
ข้อผิดพลาดที่พบบ่อย
หัวข้อที่มีชื่อว่า “ข้อผิดพลาดที่พบบ่อย”- ใช้ JSON flag สำหรับ config ที่ควรเป็นแค่ boolean ทำให้ซับซ้อนเกินจำเป็น
- ไม่ validate schema ของ JSON flag ทำให้แอป crash ถ้ามีคน edit ผิด
- เปลี่ยน value type ของ flag ที่มีอยู่แล้วทำให้โค้ดเดิมพัง
💡 ตัวอย่างจากของจริง
Netflix ใช้ JSON-type flag สำหรับ config UI ที่ซับซ้อน (เช่น layout ของหน้า home) เพื่อปรับแต่งได้ละเอียดโดยไม่ต้อง deploy