I have used Deno for Advent of Code, and I like the OOTB Typescript-Support. It’s also pretty simple to add Skia-Canvas for graphical stuff without having to use Raylib (which is great, but if you don’t need Input or Sound, and want to use canvas-API, may be too much).

$ deno add npm:skia-canvas

Add "nodeModulesDir": "auto" to deno.json

$ deno install --allow-scripts
$ deno run --allow-all main.ts

This example can be used as a starting-point:

import { Window } from "skia-canvas";

const win = new Window(300, 300);
win.title = "Canvas Window";
win.on("draw", (e) => {
  const ctx = e.target.canvas.getContext("2d");
  ctx.lineWidth = 25 + 25 * Math.cos(e.frame / 10);
  ctx.beginPath();
  ctx.arc(150, 150, 50, 0, 2 * Math.PI);
  ctx.stroke();
});