Skip to content

Commit 33ed7d1

Browse files
leonsenftAndrewKushnir
authored andcommitted
refactor(forms): do not infer accumulated metadata type from initial value
This removes the need to specify type arguments for `reducedMetadataKey()` when the value returned from the `getIntial` callback is a subtype of the accumulated type. (cherry picked from commit 8866934)
1 parent fc3a28e commit 33ed7d1

File tree

2 files changed

+6
-7
lines changed

2 files changed

+6
-7
lines changed

goldens/public-api/forms/signals/index.api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ export function readonly<TValue, TPathKind extends PathKind = PathKind.Root>(pat
428428
export type ReadonlyArrayLike<T> = Pick<ReadonlyArray<T>, number | 'length' | typeof Symbol.iterator>;
429429

430430
// @public
431-
export function reducedMetadataKey<TAcc, TItem>(reduce: (acc: TAcc, item: TItem) => TAcc, getInitial: () => TAcc): AggregateMetadataKey<TAcc, TItem>;
431+
export function reducedMetadataKey<TAcc, TItem>(reduce: (acc: TAcc, item: TItem) => TAcc, getInitial: NoInfer<() => TAcc>): AggregateMetadataKey<TAcc, TItem>;
432432

433433
// @public
434434
export type RemoveStringIndexUnknownKey<K, V> = string extends K ? unknown extends V ? never : K : K;

packages/forms/signals/src/api/metadata.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export class AggregateMetadataKey<TAcc, TItem> {
5757
*/
5858
export function reducedMetadataKey<TAcc, TItem>(
5959
reduce: (acc: TAcc, item: TItem) => TAcc,
60-
getInitial: () => TAcc,
60+
getInitial: NoInfer<() => TAcc>,
6161
): AggregateMetadataKey<TAcc, TItem> {
6262
return new (AggregateMetadataKey as new (
6363
reduce: (acc: TAcc, item: TItem) => TAcc,
@@ -71,7 +71,7 @@ export function reducedMetadataKey<TAcc, TItem>(
7171
* @experimental 21.0.0
7272
*/
7373
export function listMetadataKey<TItem>(): AggregateMetadataKey<TItem[], TItem | undefined> {
74-
return reducedMetadataKey<TItem[], TItem | undefined>(
74+
return reducedMetadataKey(
7575
(acc, item) => (item === undefined ? acc : [...acc, item]),
7676
() => [],
7777
);
@@ -83,7 +83,7 @@ export function listMetadataKey<TItem>(): AggregateMetadataKey<TItem[], TItem |
8383
* @experimental 21.0.0
8484
*/
8585
export function minMetadataKey(): AggregateMetadataKey<number | undefined, number | undefined> {
86-
return reducedMetadataKey<number | undefined, number | undefined>(
86+
return reducedMetadataKey(
8787
(prev, next) => {
8888
if (prev === undefined) {
8989
return next;
@@ -103,7 +103,7 @@ export function minMetadataKey(): AggregateMetadataKey<number | undefined, numbe
103103
* @experimental 21.0.0
104104
*/
105105
export function maxMetadataKey(): AggregateMetadataKey<number | undefined, number | undefined> {
106-
return reducedMetadataKey<number | undefined, number | undefined>(
106+
return reducedMetadataKey(
107107
(prev, next) => {
108108
if (prev === undefined) {
109109
return next;
@@ -191,5 +191,4 @@ export const MAX_LENGTH: AggregateMetadataKey<number | undefined, number | undef
191191
* @category validation
192192
* @experimental 21.0.0
193193
*/
194-
export const PATTERN: AggregateMetadataKey<RegExp[], RegExp | undefined> =
195-
listMetadataKey<RegExp>();
194+
export const PATTERN: AggregateMetadataKey<RegExp[], RegExp | undefined> = listMetadataKey();

0 commit comments

Comments
 (0)