Тип «число» нельзя назначить типу «GraphQLScalarType | не определено» - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь запустить запрос graphql, где тип Id является скалярным Int.

Простое написание Int не сработало. Number тоже не сработало. Затем я попробовал это:

import { Int } from "type-graphql";

interface WhereInput {
  phoneNumber_contains?: String;
  id?: typeof Int;
}

, но это тоже не сработало.

const where: WhereInput = {};

 if (criteria == '6') {
      if (searchItem) {
        where.id = Number(searchItem);
        loadUsers({
          variables: {
            where: { id: searchItem },
          },
        });
      }
    }

Теперь я получаю сообщение об ошибке where.id, что

Type 'number' is not assignable to type 'GraphQLScalarType | undefined'.

searchItem читается из текстового поля и по умолчанию является строкой. Как я могу изменить его на Int?

Мой запрос:

interface UserFilter {
  phoneNumber_contains?: String;
  id?: typeof Int;
}
export const LoadUsersQuery = gql`
  query usersList($where: UserFilter) {
    users(where: $where) {
      ...
    }
  }
`;

1 Ответ

1 голос
/ 21 апреля 2020

Вы не можете узнать, какой тип Int скаляр принимает, используя оператор typeof TS. Этот оператор возвращает тип скаляра, который GraphQLScalarType. Почему бы просто не сказать:

interface WhereInput {
  phoneNumber_contains?: string;
  id?: number;
}

В интерфейсе вы не можете использовать type-graphql. Вместо этого вы можете генерировать типы, используя graphql-code-generator .

Примитивные типы в TypeScript пишутся строчными буквами.

...