JSDoc actually has the @extends tag
/**
* @typedef {object} Dog @extends Animal
* @property {string} childProp
*/
But I don't really use that feature in TypeScript. Instead I rely on `&`. This works in exactly the same way in JSDoc.Also if you're curious about the equivalent of `extends` in generic slots, here's an example I have from a different project
/**
* @template {Record<string, unknown>} [T=Record<string, unknown>]
* @typedef {{
* children?: NewickNode<T>[];
* name?: string;
* length?: number;
* data?: T;
* }} NewickNode
*/
The generic slot here, T, is "extended" by Record<string, unknown>. The equivalent in TypeScript would look like type NewickNode<T extends Record<string, unknown> = Record<string, unknown>> = {
children?: NewickNode<T>[];
name?: string;
length?: number;
data?: T;
};I don't understand why someone would opt for "write Typescript, but add a bunch of extra characters, make the syntax clunkier, and throw away all the benefits of compile-time errors because we'd rather have runtime errors" in order to save, what, a microsecond stripping typescript out of TS files?
Everyone's complaining about "the build step" but the build step is just an eye blink of stripping out some things that match a regex.
the equivalent in typescript would be "export type" not just "type", since as I pointed out that type is exported without you being able to control it