There's never any trace of typescript types at runtime.
{
"brand": "Hash",
"value": "..."
}
which would be the case if you used the more obvious wrapper route. Using this branding approach, the branded values are exactly the same at runtime as they would be if they weren't branded.