Conversation
|
@copilot bitte mache das beispiel aus dem issue möglich und verwende nicht einen any type |
Co-authored-by: spearwolf <12805+spearwolf@users.noreply.github.com>
| this.viewComponent.setProperty('x', this.x); | ||
| this.viewComponent.setProperty('y', this.y); |
There was a problem hiding this comment.
please revert changes - the use of setProperties() and setProperty() should not change
There was a problem hiding this comment.
Reverted the view-components doc example to use setProperties again as requested. Commit: ad9339d.
| this.viewComponent.setProperty('x', this.x); | ||
| this.viewComponent.setProperty('y', this.y); |
There was a problem hiding this comment.
please revert changes - the use of setProperties() and setProperty() should not change
There was a problem hiding this comment.
Reverted the second setProperties example in the view-components doc. Commit: ad9339d.
| const { userId } = useProperties<{userId: string}>({ | ||
| userId: 'userId', | ||
| }); |
There was a problem hiding this comment.
please revert changes - do not use setProprties() with a single property. thats for setProperty
There was a problem hiding this comment.
Reverted the guide example back to useProperty instead of setProperties for a single field. Commit: ad9339d.
There was a problem hiding this comment.
Pull request overview
Refines useProperties() TypeScript typing to support per-key value types via a key→type map, aligning its inference behavior with useProperty, and updates docs/tests accordingly.
Changes:
- Update
ShadowObjectCreationAPI.usePropertiesto accept a key→type map generic and returnSignalReader<T[K] | undefined>per key (noany). - Align kernel implementation typing (
useProperty/useProperties) withMaybe<T>return types and reduceanyusage. - Update documentation examples and add a kernel spec covering typed
usePropertiesusage.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| packages/shadow-objects/src/types.ts | Updates useProperties API typing to support key→type maps. |
| packages/shadow-objects/src/in-the-dark/Kernel.ts | Aligns useProperty return type with Maybe<T> and implements typed useProperties return shape. |
| packages/shadow-objects/src/in-the-dark/Kernel.spec.ts | Adds a spec exercising typed useProperties usage. |
| packages/shadow-objects/docs/04-patterns/best-practices.md | Updates example to show typed useProperties. |
| packages/shadow-objects/docs/03-api/03-view-components.md | Fixes docs to use setProperty (instead of non-existent setProperties). |
| packages/shadow-objects/docs/03-api/01-shadow-object-api.md | Updates useProperties signature/example to reflect typed key maps. |
| packages/shadow-objects/docs/02-guides/02-creating-shadow-objects.md | Updates guide example to use typed useProperties. |
| packages/shadow-objects/CHANGELOG.md | Adds an Unreleased changelog entry for the typing improvement. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| * **Signature:** `useProperties<T>(map: { [K in keyof T]: string }): { [K in keyof T]: () => T[K] | undefined }` | ||
| * **Returns:** An object where keys match the input map, and values are signal readers. |
There was a problem hiding this comment.
useProperty is documented above as returning () => T, but the actual API type is SignalReader<Maybe<T>> (i.e., T | undefined for consumers with strictNullChecks). Since useProperties is now documented as returning T[K] | undefined, please update the useProperty signature (and ideally its example text) to also reflect the possible undefined value for consistency and correctness.
|
nada |
Draft PR description (changes not applied yet): The current
useProperties()typing cannot express per-key value types, which preventsSignalReaderinference from a key→type map. This update refines the API to align withuseProperty’s generic usage.usePropertiesgenerics to accept a key→type map and returnSignalReader<T | undefined>per key withoutany.useProperties.usePropertiesusage.Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.