No we don't. Typescript is _great_ for this.
type Book = {
title: string;
author: Author;
isbn?: string;
}
//etc
It's easier to read and write by humans than JSON-Schema, a large amount of programmers are already familiar with the syntax, and it's pretty self-explanatory to most programmers who are not.Sure, it doesn't have constraints like "maximum string length" and "must start with a capital" etc, but I'd wager that those don't really belong in a schema language anyway. The structure and the types is what matters. Once you got that covered, doing some validation on the content of the values is easy. And you can use a Real Programming Language for it, instead of something half assed.