AzLearn

تمرين إعادة البناء

Mini Template Renderer

أعد كتابة renderer صغير في TypeScript يستبدل مفاتيح القالب بقيم typed.

typescript ~16 دقيقة متوسط
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
type TemplateContext = Record<string, string | number | boolean>;

interface RenderResult {
  output: string;
  missingKeys: string[];
}

function renderTemplate(template: string, context: TemplateContext): RenderResult {
  const missingKeys = new Set<string>();

  const output = template.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g, (_match: string, key: string) => {
    const value = context[key];

    if (value === undefined) {
      missingKeys.add(key);
      return "";
    }

    return String(value);
  });

  return {
    output,
    missingKeys: [...missingKeys],
  };
}

const rendered = renderTemplate("Hello {{ name }}, you have {{ count }} drills.", {
  name: "Aziz",
  count: 25,
});

console.log(rendered.output);
console.log(rendered.missingKeys);
اكتب هنا