注意:我在此处找到的所有其他问题都与Angular相关,或者设置完全不同。
我有以下设置:
inner/action.ts
:
export type MyAction = string;
inner/functions.ts
import { MyAction } from "./action";
const identity = (action: MyAction): string => action;
export {
identity
};
inner/index.ts
import * as MyAction from "./functions";
export { MyAction };
export * from "./action";
usage.ts
import { MyAction } from "./inner";
const action: MyAction = "";
// ^___ error is here
错误:无法将名称空间 'MyAction' 用作类型
虽然IntelliJ提供了导航到代码中的那个位置。
为什么在这两种情况下不能使用相同的名称,我该怎么做才能让它们都有相同的名称?
const action: MyAction.MyAction = "";
它会显示Namespace ...functions has no exported member 'MyAction'
。此外,我也不能使用任何与import * as Foo
相关的组合。 - andrasMyAction
时帮助我显示相关函数。import * as MyAction
会强制我在各个文件中为导入命名。我使用这种方法而不是namespace
关键字,以便我可以制定“1个文件=1个函数”的规则,同时仍然拥有“命名空间”。 - andrasfunctions.ts
中添加导出以进行这个小的可重现示例。实际上这并不会改变任何东西。 - andrasinner/index.ts
尝试导出两个名为MyAction
的不同内容,而显式命名的一个(即export { MyAction};
)正在覆盖重新导出的隐式命名的内容(即export * from "./action";
),您期望进行合并而不是覆盖吗?很抱歉我在这方面没有太多见解。祝你好运! - jcalz