Как объявить модуль для выполнения именованного импорта? - PullRequest
0 голосов
/ 30 августа 2018

Я использую graphql-tag . Мои файлы такие.

. / Operation.graphql

Query User {
   ...
}

. / Test.ts

import { User } from './operation.graphql'; /// Module ''*.graphql'' has no exported member 'User'.

. / Index.d.ts

declare module '*.graphql' {
    import { DocumentNode } from 'graphql';

    const value:DocumentNode;

    export default value;
}

Приложение работает хорошо, но я хочу предотвратить эту ошибку.

Когда я выполняю импорт по умолчанию, он работает хорошо, но, как вы видите, я получаю сообщение об ошибке при именованном импорте.

Как это объявить? Благодарю. :)

1 Ответ

0 голосов
/ 30 августа 2018

Если имя экспорта, которое вы хотите, отличается для каждого файла GraphQL, TypeScript не будет анализировать ваш файл GraphQL, чтобы выяснить это автоматически. Либо вам нужно отдельное объявление модуля для каждого файла GraphQL (и вам нужно будет установить свои baseUrl и paths, чтобы вы могли использовать не относительный импорт, либо это может помочь поместить файл d.ts рядом с каждым GraphQL файл вместо declare module, я не уверен):

declare module 'operation.graphql' {
    import { DocumentNode } from 'graphql';

    export const User: DocumentNode;
}

Или вы можете отказаться и позволить всем файлам GraphQL быть типа any:

declare module '*.graphql';
...