关于node.js:TS4023:导出的变量具有或使用外部模块“ stream”中的名称“ internal.Transform”,但无法命名

TS4023: Exported variable, has or using name 'internal.Transform' from external module 'stream' but cannot be named

我看到此神秘的TypeScript错误:

TS4023: Exported variable, has or using name 'internal.Transform' from
external module 'stream' but cannot be named.

有人知道这实际上意味着什么吗?

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

enter image description here


到底是怎么回事?

Typescript无法显式命名getTapJSONParser的类型或此方法公开给外部的任何类型。原因有两个:要么不包括internal.Transform的定义,要么该定义被本地定义遮蔽。在您的示例中,两种可能性中的第一种很可能导致您遇到麻烦。

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

如何解决这个问题?

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