如何在我的自定义类型中包含非命名模块 TS 定义

Posted

技术标签:

【中文标题】如何在我的自定义类型中包含非命名模块 TS 定义【英文标题】:How to include a non namepsaced module TS definition in my custom types 【发布时间】:2021-02-13 23:30:48 【问题描述】:

在我的自定义类型中,我希望使用来自graphql 模块的GraphQLSchema。如果我只是写:

interface MyThing 
  schema: GraphQLSchema

它没有引用模块中的GraphQLSchema 定义(它只是any)。 VSCode 然后建议自动添加导入文件:

import  GraphQLSchema  from 'graphql'

定义现在是正确的(即在 VSCode 中将鼠标悬停在其上方会弹出正确的类型)但现在我的自定义类型文件不再有效 - 即我无法在我的代码中使用 MyThing - 它不再被定义。

我的 tsconfig 确实包含我的自定义类型以及 node_modules/@types - vscode 似乎看到了它,所以我认为它没问题。我确实尝试专门添加包含定义但没有执行的 graphql 文件的路径。

我可以在没有导入的情况下使用其他命名空间的定义,但不是那个。

建议?

【问题讨论】:

见***.com/questions/42233987/… 他们提到没有在定义文件中使用import,这是我的问题,但我没有看到如何解决这个问题的答案? 【参考方案1】:

好的 - 对体验 TS 来说可能很明显,但对我来说不是。如果有导入语句,则必须显式导出所有内容。我的文件中没有导出语句,因为 TS 似乎不在乎,但我猜你添加导入的那一刻,所有的都必须导出。

有效(但无法导入)

interface MyThing 
  schema: any

不工作

import  GraphQLSchema  from 'graphql'
interface MyThing 
  schema: GraphQLSchema

适用于进口

import  GraphQLSchema  from 'graphql'
export interface MyThing 
  schema: GraphQLSchema

【讨论】:

以上是关于如何在我的自定义类型中包含非命名模块 TS 定义的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的自定义主题中包含自定义 js 文件?

如何在我的自定义小部件模板中包含内置的 django 小部件模板?

如何在 Angular 2 中包含打字稿自定义类型定义?

如何在我的自定义用户模块中避免此“'tuple' 对象没有属性 'photo'”错误?

为啥 Access-Control-Request-Headers 中包含非自定义标头?

Drupal 视图模块卡在我的自定义主题上