tshtmlwriter: ساخت HTML با زنجیرهٔ متدها
خلاصهٔ کاملتر
tshtmlwriter یه کتابخونهٔ TypeScript هست برای ساختن HTML بدون رشتهچسبونی، بدون template literal و بدون JSX. به جاش متدها رو پشت سر هم زنجیر میکنی، چون هر متد دوباره خود IHTMLWriter رو برمیگردونه. تو مخزن اومده که این پروژه پورت TypeScript یه کتابخونهٔ قدیمیتر به اسم DelphiHTMLWriter هست که اولش با Delphi/Object Pascal نوشته شده بود.
شکل کار کردن باهاش اینجوریه:
const html = createDocument('html5')
.openHead()
.addTitle('Hello World')
.closeTag()
.openBody()
.addHeadingText(1, 'Welcome')
.addParagraphText('Built with tshtmlwriter.')
.closeTag()
.closeDocument()
.toHTML();سه تا نقطهٔ شروع داره: createDocument(docType?) برای یه سند کامل با DOCTYPE، create(tagName) برای شروع از هر تگ دلخواه، و createFragment() برای وقتی که تگ دربرگیرنده نمیخوای. از اونجا به بعد هرچی لازم داری هست: لیستها، جدولها، فرمها، المانهای معنایی HTML5 مثل header و main و footer، مدیا، و متدهای میانبری مثل addFigure() و addDetailsSummary().
بخش جالبش کنترل خطاست. تایپها سختگیرن و مثلاً سطح هدینگ فقط میتونه ۱ تا ۶ باشه چون با HeadingLevel چک میشه. جدا از اون، موقع اجرا هم ساختار غلط رو با خطای واضح میگیره:
create('div').addListItem('oops');
// ❌ NotInListError: Must be inside a list tagخطاهای دیگهش هم اسمهای گویایی دارن، مثل ClosingClosedTagError وقتی تگ بستهشده رو دوباره ببندی و DocumentHasOpenTagsError وقتی سند رو با تگ باز ببندی. سختگیری این چکها هم با setErrorLevels() قابل تنظیمه. برای نصب هم npm install tshtmlwriter یا bun add tshtmlwriter کافیه.
نکات کلیدی:
- صفر وابستگی؛ فقط TypeScript، با ۳۴۷ تست تو ۲۱ فایل تست
- هر متد IHTMLWriter برمیگردونه، برای همین کل ساخت سند یه زنجیرهست
- سه نقطهٔ شروع: createDocument(docType?)، create(tagName) و createFragment()
- خطاهای زمان اجرا با اسم مشخص: NotInListError، ClosingClosedTagError، DocumentHasOpenTagsError
- همهٔ تایپها مثل HeadingLevel، FormatType و InputType برای استفاده تو کد خودت export شدن




