Usage
In order to draw debug graphics, you'll need a canvas element in your HTML. Make sure, that it is an overlay above your game canvas (same position and size). You might also want to set the style pointer-events: none.
Create a New Instance
// Somewhere at the start, find the element and create a new DebugDraw instance:
function initDebugDraw() {
  const canvas = document.querySelector("#debug-canvas") as HTMLCanvasElement | null;
  if (!canvas) throw new Error("Could not find debug canvas!");
  const ctx = canvas.getContext("2d");
  if (!ctx) throw new Error("Could not create 2d context for debug-draw");
  return new DebugDraw(ctx);
}
Prepare Drawing
import { DebugDraw } from "@box2d/debug-draw";
import { XY, b2AABB, DrawShapes, DrawJoints, DrawAABBs, DrawCenterOfMasses, DrawPairs } from "@box2d/core";
import { DrawParticleSystems } from "@box2d/particles";
import { DrawControllers } from "@box2d/controllers";
// After you ran your world.Step(), draw the world like this:
function drawDebug(draw: DebugDraw, center: XY, zoom: number, aabb?: b2AABB) {
  draw.Prepare(center.x, center.y, zoom, true);
  // Draw whatever you want here:
  DrawShapes(draw, this.m_world, aabb);
  DrawParticleSystems(draw, this.m_world);
  DrawJoints(draw, this.m_world);
  DrawAABBs(draw, this.m_world, aabb);
  DrawPairs(draw, this.m_world);
  DrawCenterOfMasses(draw, this.m_world);
  DrawControllers(draw, this.m_world);
  draw.Finish();
}
Notice how DrawShapes and DrawAABBs have a third, optional parameter of type AABB.
This is a performance optimization if you have a big world. Give it the AABB of your camera to reduce the load.
The other drawing functions might receive such a parameter in the future as well, but currently don't support it.
Custom Renderer
In case you want to draw to WebGL directly instead of a canvas, you can write your own b2Draw implementation. You won't need this library anymore, but you can take a look at its code for a reference.