export class ComponentDefinition { public readonly id: Id; public constructor(id: Id) { this.id = id; } public create(...args: Args): string { return args.length > 0 ? `${this.id}:${args.join(":")}` : this.id; } public parse(customId: string): Args | null { const parts = customId.split(":"); if (parts[0] !== this.id) return null; return parts.slice(1) as unknown as Args; } }