fix(apps): type hints for results are automatically widened

This commit is contained in:
Ruben Fiszel
2024-08-13 11:05:56 +02:00
parent 8950aae44e
commit d3d3f1785a
+17 -3
View File
@@ -174,15 +174,29 @@ export function buildExtraLib(
.filter(([k, v]) => k != idToExclude && k != 'state')
.map(([k, v]) => [k, Object.fromEntries(Object.entries(v).map(([k, v]) => [k, v.peak()]))])
.map(
([k, v]) => `declare const ${k}: ${JSON.stringify(v)};
([k, v]) => `declare const ${k}: Widen<${JSON.stringify(v)}>;
`
)
.join('\n')
return `${cs}
return `
type Widen<T> = T extends string
? string
: T extends number
? number
: T extends boolean
? boolean
: T extends Array<infer U>
? Array<Widen<U>>
: T extends object
? { [K in keyof T]: Widen<T[K]> }
: T;
/** The mutable state of the app */
declare const state: ${JSON.stringify(state)} & {[key: string]: any};
declare const state: Widen<${JSON.stringify(state)}> & {[key: string]: any};
${cs}
${
goto