【问题标题】:TS4023: Exported variable, has or using name 'internal.Transform' from external module 'stream' but cannot be namedTS4023:导出的变量,具有或使用来自外部模块“stream”的名称“internal.Transform”,但无法命名
【发布时间】:2018-01-06 08:29:54
【问题描述】:

我看到了这个神秘的 TypeScript 错误:

TS4023:导出的变量,具有或使用名称“internal.Transform”来自 外部模块“流”,但无法命名。

有谁知道这实际上是什么意思?

我在 Github 上看到了这个问题,试图破译它: https://github.com/Microsoft/TypeScript/issues/5711

【问题讨论】:

    标签: node.js typescript typescript2.0


    【解决方案1】:

    发生了什么事?

    Typescript 无法明确命名 getTapJSONParser 的类型或此方法向外界公开的任何内容。这有两个原因:要么您不包含 internal.Transform 的定义,要么该定义被本地定义所掩盖。在您的示例中,这两种可能性中的第一种很可能会给您带来麻烦。

    现在,在错误消息中看起来 typescript 正确确定了类型,为什么它仍然发出错误消息?要导出任何内容,typecipt 需要能够直接引用类型。它基本上知道要使用哪种类型,但不能引用它,因为它没有添加任何额外的导入语句。这意味着如果添加类型定义添加了未导入的类型,则命名失败,导致此错误消息。考虑这一点的更简单方法是:如果您将手动添加类型定义到导出的内容,是否会因为您没有显式导入使用的类型定义而导致错误?如果是,即使您希望 typescript 找出类型,您也需要添加这些导入。

    如何解决这个问题?

    首先,确认您没有任何隐藏internal.Transform 的类型。如果不是这种情况,import { Transform } from "stream";(或者只导入流导出的所有内容,如果您使用的不仅仅是Transform,可能会更容易)。

    【讨论】:

      猜你喜欢
      • 2017-10-09
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      • 2019-06-06
      • 2017-09-06
      • 2018-07-09
      • 1970-01-01
      • 2020-04-05
      相关资源
      最近更新 更多