Skip to content

Commit 5661a36

Browse files
committed
revert Primitive type to list of primitive types and not generic
if you write it in the generic form T extends object, Freeze does not work anymore
1 parent 52fa66a commit 5661a36

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/index.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ const Settings = {
4747
const Traps_self = Symbol();
4848
const Traps_target = Symbol();
4949

50-
export type Primitive<T> = T extends object ? T : never;
51-
export type Prop = string | number | symbol;
50+
export type Primitive = null | undefined | boolean | number | string | symbol;
51+
export type Prop = number | string | symbol;
5252
export type UnknownObj = Record<Prop, unknown>;
5353
export type UnknownArr = Array<unknown>;
5454
export type UnknownMap = Map<unknown, unknown>;
@@ -61,7 +61,7 @@ export type PatchCallback = (patches: Patch[], inversePatches: Patch[]) => void;
6161

6262
export type FreezeOnce<T> = T extends Freeze<infer Q> ? Freeze<Q> : Freeze<T>;
6363

64-
export type Freeze<T> = T extends Primitive<T>
64+
export type Freeze<T> = T extends Primitive
6565
? T
6666
: T extends Array<infer U>
6767
? ReadonlyArray<Freeze<U>>
@@ -75,7 +75,7 @@ export type Freeze<T> = T extends Primitive<T>
7575
? ReadonlySet<Freeze<M>>
7676
: { readonly [K in keyof T]: Freeze<T[K]> };
7777

78-
export type UnFreeze<T> = T extends Primitive<T>
78+
export type UnFreeze<T> = T extends Primitive
7979
? T
8080
: T extends Array<infer Q>
8181
? Array<UnFreeze<Q>>
@@ -622,7 +622,7 @@ export function applyPatch<T extends object>(
622622
}
623623
}
624624

625-
function isPrimitive<T>(x: unknown): x is Primitive<T> {
625+
function isPrimitive(x: unknown): x is Primitive {
626626
if (x === null) return true;
627627
const type = typeof x;
628628
if (type !== Types.function && type !== Types.object) return true;
@@ -671,7 +671,7 @@ function shallowClone<T>(x: T, type?: Types): object {
671671
}
672672

673673
const cloneTypes: Partial<Record<Types, Function>> = {
674-
[Types.primitive]<T>(x: Primitive<T>) {
674+
[Types.primitive](x: Primitive) {
675675
return x;
676676
},
677677
[Types.Object](x: Object) {

0 commit comments

Comments
 (0)