如何声明一个模块来进行命名导入?
Posted
技术标签:
【中文标题】如何声明一个模块来进行命名导入?【英文标题】:How to declare a module to do named imports? 【发布时间】:2019-02-05 15:57:11 【问题描述】:我正在使用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';
【讨论】:
谢谢。 :) 这很有帮助!以上是关于如何声明一个模块来进行命名导入?的主要内容,如果未能解决你的问题,请参考以下文章