@@ -360,12 +360,12 @@ export class Kernel {
360360 const contextProviders = new Map < string | symbol , Signal < any > > ( ) ;
361361 const contextRootProviders = new Map < string | symbol , Signal < any > > ( ) ;
362362
363- const propertyReaders = new Map < string , SignalReader < any > > ( ) ;
363+ const propertyReaders = new Map < string , SignalReader < unknown > > ( ) ;
364364
365- const getUseProperty = < T = any > (
365+ const getUseProperty = < T = unknown > (
366366 name : string ,
367367 options ?: SignalValueOptions < T > | CompareFunc < T | undefined > ,
368- ) : SignalReader < T > => {
368+ ) : SignalReader < Maybe < T > > => {
369369 if ( ! usePropertyOptionsDeprecatedShown && options != null && typeof options === 'function' ) {
370370 console . warn (
371371 '[shadow-objects] Deprecation Warning: The "isEqual" option of "useProperty()" is now passed as {compare} argument. Please update your code accordingly.' ,
@@ -375,11 +375,11 @@ export class Kernel {
375375
376376 const opts = typeof options === 'function' ? { compare : options } : options ;
377377
378- let propReader = propertyReaders . get ( name ) ;
378+ let propReader = propertyReaders . get ( name ) as SignalReader < Maybe < T > > | undefined ;
379379
380380 if ( propReader === undefined ) {
381- propReader = createSignal < any > ( undefined , opts ) . get ;
382- propertyReaders . set ( name , propReader ) ;
381+ propReader = createSignal < Maybe < T > > ( undefined , opts ) . get ;
382+ propertyReaders . set ( name , propReader as SignalReader < unknown > ) ;
383383 const con = link ( entry . entity . getPropertyReader ( name ) , propReader ) ;
384384 unsubscribeSecondary . add ( con . destroy . bind ( con ) ) ;
385385 }
@@ -523,8 +523,10 @@ export class Kernel {
523523
524524 useProperty : getUseProperty ,
525525
526- useProperties < K extends string > ( props : Record < K , string > ) : Record < K , SignalReader < any > > {
527- const result = { } as Record < K , SignalReader < any > > ;
526+ useProperties < T extends Record < string , unknown > = Record < string , unknown > > (
527+ props : { [ K in keyof T ] : string } ,
528+ ) : { [ K in keyof T ] : SignalReader < Maybe < T [ K ] > > } {
529+ const result = { } as { [ K in keyof T ] : SignalReader < Maybe < T [ K ] > > } ;
528530 for ( const key in props ) {
529531 if ( Object . hasOwn ( props , key ) ) {
530532 result [ key ] = getUseProperty ( props [ key ] ) ;
0 commit comments