Skip to content

Commit 234d6f4

Browse files
committed
fix: types for return of mounted templates
1 parent a18571c commit 234d6f4

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

.changeset/major-shrimps-play.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@marko/runtime-tags": patch
3+
---
4+
5+
Fix types for return of mounted templates.

packages/runtime-tags/index.d.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,19 @@ declare global {
4646
};
4747

4848
/** The result of calling `template.mount`. */
49-
export type MountedTemplate<Input = unknown, Return = unknown> = {
50-
value: Return;
49+
export type MountedTemplate<
50+
Input = unknown,
51+
Return extends void | {
52+
value: unknown;
53+
valueChange?(next: unknown): void;
54+
} = void,
55+
> = {
56+
get value(): Return extends { value: infer Value } ? Value : void;
57+
set value(
58+
next: Return extends { valueChange?(next: infer Next): any }
59+
? Next
60+
: never,
61+
): void;
5162
update(input: Marko.TemplateInput<Input>): void;
5263
destroy(): void;
5364
};
@@ -74,7 +85,13 @@ declare global {
7485
B extends Body<infer Params, any> ? Params : never;
7586

7687
/** The top level api for a Marko Template. */
77-
export abstract class Template<Input = unknown, Return = unknown> {
88+
export abstract class Template<
89+
Input = unknown,
90+
Return extends void | {
91+
value: unknown;
92+
valueChange?(next: unknown): void;
93+
} = void,
94+
> {
7895
/**
7996
* The folowing types are processed up by the @marko/language-tools
8097
* and inlined into the compiled template.

0 commit comments

Comments
 (0)