Tsonic؛ تایپاسکریپت رو به C# تبدیل میکنه
خلاصهٔ کاملتر
تو این صفحه معرفی شده که Tsonic یه کامپایلره که یه زیرمجموعهی سختگیرانه و قطعی (deterministic) از TypeScript رو به C# ترجمه میکنه و بعد از روی اون پروژهی C# تولیدشده، باینری نیتیو یا خروجیهای .NET میسازه. ایدهش اینه که برنامهنویس با همون سینتکس آشنای تایپاسکریپت کد بزنه ولی نتیجه توی اکوسیستم داتنت اجرا بشه.
قلب پروژه خود tsonic ـه که هم کامپایلره و هم رابط خطفرمان. کنارش @tsonic/core تایپهای پایه و intrinsicهای کامپایلر رو میده و @tsonic/js هم سطح محیطی جاوااسکریپت رو فراهم میکنه. برای کسایی که سبک Node کار میکنن، @tsonic/nodejs هست و برای روتینگ و میدلویر سبک Express هم @tsonic/express.
بخش جالبش بایندینگ به دنیای داتنته. ابزاری به اسم tsbindgen پکیجهای بایندینگ CLR رو خودکار تولید میکنه؛ چیزهایی مثل @tsonic/dotnet، @tsonic/aspnetcore، @tsonic/microsoft-extensions و پکیجهای EF Core. یعنی میتونی مستقیم به APIهای استاندارد داتنت وصل بشی.
صفحه چند نمونهی شروع سریع نشون میده. مثلاً تو حالت ASP.NET Core میتونی یه وباپ کوچیک رو با همون الگوهای آشنای داتنت ولی با تایپاسکریپت بنویسی:
import { WebApplication } from "@tsonic/aspnetcore/Microsoft.AspNetCore.Builder.js";
export function main(): void {
const builder = WebApplication.CreateBuilder();
const app = builder.Build();
app.MapGet("/", () => "Hello from ASP.NET Core");
app.Run("http://localhost:8080");
}نمونههای دیگهای هم برای کار با EF Core و SQLite، استفاده از ماژولهای Node مثل fs و path، و یه ورکاسپیس سادهی CLR-first هست که فقط روی کنسول داتنت چیزی چاپ میکنه. الگوی همهشون یکیه: یه تابع main که نقطهی ورود برنامهست.
طبق مستندات، خود سایت tsonic.org بهجای اینکه داکیومنتها رو محلی نگه داره، مستندات رو از ریپازیتوریهای صاحب هر بخش mount میکنه و فقط صفحههای ترکیبی بینریپویی رو خودش نگه میداره. کیفیت هر نسخه هم از طریق تستهای کامپایلر، سلفتست پکیجها، پکیجهای بایندینگ تولیدشده و اپلیکیشنهای پاییندستی بررسی میشه.
نکات کلیدی:
- یه زیرمجموعهی سختگیرانه و قطعی از TypeScript رو به C# و بعد باینری نیتیو یا خروجی .NET تبدیل میکنه
- اکوسیستم پکیج از سطح JS و ماژولهای Node تا روتینگ سبک Express
- ابزار tsbindgen بایندینگهای CLR مثل ASP.NET Core و EF Core رو خودکار میسازه
- هر نمونه با یه تابع main بهعنوان نقطهی ورود شروع میشه
- مستندات از ریپوهای صاحب هر بخش mount میشن، نه کپی محلی




