Как объявить модуль для выполнения именованного импорта?
Я использую 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 ответ
Если имя экспорта, которое вы хотите, отличается для каждого файла 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';