我看到了这个神秘的TypeScript错误:
TS4023:导出变量,拥有或使用名称'internal.Transform' 外部模块'stream'但无法命名。
有谁知道这实际意味着什么?
我在Github上看到这个问题,试图破译它: https://github.com/Microsoft/TypeScript/issues/5711
答案 0 :(得分:2)
Typescript无法明确命名getTapJSONParser
的类型或此方法暴露给外部世界的任何内容。这有两个原因:要么您不包含internal.Transform
的定义,要么该定义被本地定义遮蔽。在你的例子中,很可能两种可能性中的第一种会给你带来麻烦。
现在,在错误消息中,看起来typecript正确地确定了类型,为什么它仍然会发出错误消息?对于导出任何东西,typescipt需要能够直接引用该类型。它基本上知道它想要使用哪种类型,但只是不能引用它,因为它不会添加任何额外的import语句。这意味着如果添加类型定义会添加未导入的类型,则命名将失败,从而导致出现此错误消息。考虑这一点的一种更简单的方法是:如果要手动将类型定义添加到导出的内容中,是否会导致错误,因为您没有明确导入您使用的类型定义?如果是,即使您希望打字稿找出类型,也需要添加这些导入。
首先,确认您没有任何阴影internal.Transform
的类型。如果不是这种情况,import { Transform } from "stream";
(或者只是导入流导出的所有内容,如果使用的不仅仅是Transform
,则可能会更容易。)