import "./style.css"; import { lessons } from "./lessons"; function getRequiredElement(selector: string, parent: ParentNode = document): T { const element = parent.querySelector(selector); if (!element) { throw new Error(`Required element was not found: ${selector}`); } return element; } const app = getRequiredElement("#app"); app.innerHTML = `

06-typescript

知识点

    Starter

    `; const nav = getRequiredElement(".lesson-nav"); const title = getRequiredElement("#lesson-title"); const focus = getRequiredElement("#lesson-focus"); const summary = getRequiredElement("#lesson-summary"); const pointList = getRequiredElement("#lesson-points"); const starterCode = getRequiredElement("#starter-code"); let activeLessonId = lessons[0]?.id ?? ""; function renderLessonList(): void { nav.innerHTML = lessons .map((lesson) => { const isActive = lesson.id === activeLessonId; return ` `; }) .join(""); } function renderActiveLesson(): void { const lesson = lessons.find((item) => item.id === activeLessonId); if (!lesson) { return; } title.textContent = `${lesson.id}. ${lesson.title}`; focus.textContent = lesson.focus; summary.textContent = lesson.summary; pointList.innerHTML = lesson.keyPoints.map((item) => `
  • ${item}
  • `).join(""); starterCode.textContent = lesson.starterCode; renderLessonList(); } nav.addEventListener("click", (event) => { const target = event.target as HTMLElement; const button = target.closest("[data-id]"); if (!button) { return; } activeLessonId = button.dataset.id ?? activeLessonId; renderActiveLesson(); }); renderActiveLesson();