Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support readonly arrays #375

Open
cahman opened this issue Jan 4, 2024 · 1 comment
Open

Support readonly arrays #375

cahman opened this issue Jan 4, 2024 · 1 comment

Comments

@cahman
Copy link

cahman commented Jan 4, 2024

Hi! 馃憢

Firstly, thanks for your work on this project! 馃檪

Today I used patch-package to patch optics-ts@2.4.1 for the project I'm working on.

Here is the diff that solved my problem:

diff --git a/node_modules/optics-ts/utils.d.ts b/node_modules/optics-ts/utils.d.ts
index 75da246..c769d97 100644
--- a/node_modules/optics-ts/utils.d.ts
+++ b/node_modules/optics-ts/utils.d.ts
@@ -2,7 +2,7 @@ export interface NotAnArrayType<T> {
     readonly _: unique symbol;
     readonly _t: T;
 }
-export type ElemType<A> = IfElse<IsOptional<A>, NotAnArrayType<A>, A extends (infer Item)[] ? Item : NotAnArrayType<A>>;
+export type ElemType<A> = IfElse<IsOptional<A>, NotAnArrayType<A>, A extends (infer Item)[] ? Item : A extends readonly (infer Item)[] ? Item : NotAnArrayType<A>>;
 export type Eq<A, B> = [A, B] extends [B, A] ? true : false;
 export type Simplify<A, B> = Eq<A, B> extends true ? A : B;
 export type IsOptional<A> = Or<ExtendsUndefined<A>, ExtendsNull<A>>;

This issue body was partially generated by patch-package.

@rikutiira
Copy link

We are also running into the same thing, it would be great if optics-ts would support readonly arrays.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants