ข้ามไปยังเนื้อหา

ชนิดของ Flag

เมื่อคุณสร้าง Feature ใน GrowthBook คุณจะเลือก value type หนึ่งในสี่แบบ ชนิดนี้เป็นแบบถาวร — คุณเปลี่ยนไม่ได้หลังจากสร้างไปแล้ว ดังนั้นเลือกอย่างตั้งใจ

ชนิดที่ง่ายที่สุด: 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 GrowthBook

argument สำหรับ fallback ของ getFeatureValue ต้องเป็นออบเจกต์ JS ที่ถูกต้องและตรงกับรูปร่างที่คุณคาดหวังจาก GrowthBook ถ้า GrowthBook เข้าถึงไม่ได้ แอปของคุณก็ยังทำงานได้ด้วย fallback

ชนิดค่าที่ SDK คืนเหมาะกับ
Booleantrue / falsefeature gate, kill switch
Stringสตริงใด ๆปรับเปลี่ยนข้อความ, ชื่อ layout
Numberตัวเลขใด ๆthreshold, limit, ราคา
JSONออบเจกต์หรืออาร์เรย์ใด ๆชุด config, การตั้งค่าหลายคุณสมบัติ
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
JSONflexible สุด ปรับ 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

value type แบบไหนที่คุณควรใช้สำหรับ feature gate แบบง่าย (แสดง/ซ่อนองค์ประกอบ UI)?
gb.getFeatureValue("cart-max-items", 10) คืนค่าอะไรเมื่อเข้าถึง GrowthBook ไม่ได้?
คุณสามารถเปลี่ยน value type ของ Feature ได้ไหมหลังจากที่ถูกสร้างใน GrowthBook แล้ว?
value type แบบไหนเหมาะที่สุดสำหรับการส่ง configuration ที่มีหลายคุณสมบัติ (เช่น สี, ขนาด, layout)?