CLR / .NET Examples
Console
import { Console } from "@tsonic/dotnet/System.js";
export function main(): void {
Console.WriteLine("Hello");
}
Collections
import { Dictionary } from "@tsonic/dotnet/System.Collections.Generic.js";
const map = new Dictionary<string, number>();
map.Add("a", 1);
JSON
import { JsonSerializer } from "@tsonic/dotnet/System.Text.Json.js";
const text = JsonSerializer.Serialize({ ok: true });
Explicit numeric types
import type { int } from "@tsonic/core/types.js";
import { Console } from "@tsonic/dotnet/System.js";
const value: int = 1 as int;
Console.WriteLine(value.ToString());
ASP.NET Core
import { WebApplication } from "@tsonic/aspnetcore/Microsoft.AspNetCore.Builder.js";
import type { ExtensionMethods } from "@tsonic/aspnetcore/Microsoft.AspNetCore.Builder.js";
export function main(): void {
const builder = WebApplication.CreateBuilder();
const app = builder.Build() as ExtensionMethods<WebApplication>;
app.MapGet("/", () => "Hello");
app.Run("http://localhost:8080");
}
Attributes and interop intrinsics
Use @tsonic/core/lang.js when you need CLR-specific semantics such as:
asinterfacenameofsizeofdefaultofout- attribute markers and overload-family markers
The current package model keeps those CLR-facing tools explicit instead of hiding them behind ambient JS-style behavior.