【问题标题】: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
【问题描述】:
【问题讨论】:
标签:
node.js
typescript
typescript2.0
【解决方案1】:
发生了什么事?
Typescript 无法明确命名 getTapJSONParser 的类型或此方法向外界公开的任何内容。这有两个原因:要么您不包含 internal.Transform 的定义,要么该定义被本地定义所掩盖。在您的示例中,这两种可能性中的第一种很可能会给您带来麻烦。
现在,在错误消息中看起来 typescript 正确确定了类型,为什么它仍然发出错误消息?要导出任何内容,typecipt 需要能够直接引用类型。它基本上知道要使用哪种类型,但不能引用它,因为它没有添加任何额外的导入语句。这意味着如果添加类型定义添加了未导入的类型,则命名失败,导致此错误消息。考虑这一点的更简单方法是:如果您将手动添加类型定义到导出的内容,是否会因为您没有显式导入使用的类型定义而导致错误?如果是,即使您希望 typescript 找出类型,您也需要添加这些导入。
如何解决这个问题?
首先,确认您没有任何隐藏internal.Transform 的类型。如果不是这种情况,import { Transform } from "stream";(或者只导入流导出的所有内容,如果您使用的不仅仅是Transform,可能会更容易)。