graphql-codegen-typescript-fabbrica icon indicating copy to clipboard operation
graphql-codegen-typescript-fabbrica copied to clipboard

Passing an unknown field does not report type errors

Open mizdra opened this issue 1 year ago • 1 comments
trafficstars

Environment

@mizdra/graphql-codegen-typescript-fabbrica version: 0.3.2 typescript version (optional): @graphql-codegen/cli version (optional): @graphql-codegen/typescript version (optional):

Summary

I would expect a type error to be reported when an unknown field is passed to defaultFields, but it is not.

type Book {
  title: String!
}
import { defineBookFactory } from '../__generated__/fabbrica';

const BookFactory = defineBookFactory({
  defaultFields: {
    title: 'Yuyushiki',
    // @ts-expect-error I expect a type error to be reported, but it is not.
    unknownField: 'hello',
  },
});

Step to reproduce

https://stackblitz.com/edit/playground-graphql-codegen-typescript-fabbrica-4yjhkc?file=src%2Findex.test.ts&view=editor

What did you expect to happen?

A type error is reported.

What actually happened?

No type errors are reported.

Participation

  • [ ] I am willing to submit a pull request for this issue.

Additional comments

It may be necessary to assign a dedicated type parameter for each field.

https://www.typescriptlang.org/play?#code/C4TwDgpgBA8mwEsD2A7AhgGwEJKQaygF4oBvAKCikWAwgH4AuKAZ2ACcEUBzKAHygCuKACYQAZpwjCA3BSgJhjFu049+Q0RJRTZAX1llRAYwxo20MUKOJUUAEYCEGYTnwBGADwAVKBAAewBAizLDwyOjYuHgAfAAUZlzMTF4AlMmyRqisUObMAhjAbkT2js6ueG6x5AD01ZSUAHp0ctS0TADkaO0ANHK1UAACwMwAtP6Q1mNsbEhsckJ4KEgA7igAYggQzkxuvbopsrG5+YUsaIjMEhAhJFQINBBMrBzcUPsGxqbmUJYo1uElJwuKIAJm8vgCQWEITgNgi5QA2u1WhB2gBdYoacSSYTdKAAVQhgWCoThmER7QU6MxImx2mEcQSSVIdweSi8eIUSkJ+yYtxRyU5wiYPIyWWAOWuJxBxQcQPKIKqZH69SaLXubSgnR6fTqQ1G4wgkwg01m8xQixW6022yguzI7zIRylBRlzHOCEumxurM1z1UbwOZEMRq+FiscMBZSiAGZwf5idDSeFyVFGWxEnzfY8oF4kSj0ULkkiqRjebmxShsscCjHZaVgfgY0qVY1mpQBVqur1KP19WM-BNgFMZnNKAslqsNlthXa9kHnXla2cLlcfZ3-a9HUA

mizdra avatar Mar 10 '24 15:03 mizdra

It may be a good idea to provide a lint rule. https://github.com/johnsoncodehk/typescript-linter would be useful for it.

mizdra avatar Mar 16 '24 17:03 mizdra