如何声明一个模块以执行命名导入?

时间:2018-08-30 16:19:05

标签: typescript module graphql graphql-tag

我正在使用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 :(得分:2)

如果每个GraphQL文件所需的导出名称不同,TypeScript不会解析您的GraphQL文件以自动找出它。您需要为每个GraphQL文件使用单独的模块声明(并且需要设置baseUrlpaths,以便可以使用非相对导入,或者可以放置{{1 }}文件与每个GraphQL文件一起使用,而不是d.ts,我不确定):

declare module

或者您可以放弃并让所有GraphQL文件的类型为declare module 'operation.graphql' { import { DocumentNode } from 'graphql'; export const User: DocumentNode; }

any
相关问题