如何声明一个模块来进行命名导入?
How to declare a module to do named imports?
我正在使用 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;
}
一个应用程序运行良好,但我想防止该错误。
当我执行默认导入时效果很好,但如您所见,我在命名导入时遇到错误。
如何申报?谢谢。 :)
如果每个 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';
我正在使用 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;
}
一个应用程序运行良好,但我想防止该错误。
当我执行默认导入时效果很好,但如您所见,我在命名导入时遇到错误。
如何申报?谢谢。 :)
如果每个 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';