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’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Type inference support #43

Open
ilgazil opened this issue Jun 9, 2021 · 0 comments
Open

Type inference support #43

ilgazil opened this issue Jun 9, 2021 · 0 comments

Comments

@ilgazil
Copy link

ilgazil commented Jun 9, 2021

Let's admit a simple base schema like this one:

const SnakeSchema = {
  type: 'object',
  properties: {
    name: { type: 'string' },
    foo_bar: { type: 'string' },
  },
} as const;

I want the type inference to work within my application, so I use the JTDDataType utility.

import { JTDDataType } from 'ajv/dist/jtd';

const SnakeSchema = { /* ... */ } as const;

type Snake = JTDDataType<typeof SnakeSchema>;

Now, let's write a simple patch:

const KebabSchema = {
  $patch: {
    source: SnakeSchema,
    with: [
      { op: 'move', from: '/properties/foo_bar', to: '/properties/fooBar' },
    ],
  },
} as const;

The only way I found to get the infered type is by doing this:

type Kebab = Omit<Snake, 'foo_bar'> & {
  fooBar: SnakeSchema['foo_bar'];

As it is not really DRY, I was wondering if there is something I miss in the docs... If not, maybe is there something that can be done in the project?

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

No branches or pull requests

1 participant