Typescript 打字机脚本:";无法将命名空间用作类型";
注意:我发现的所有其他问题都与角度有关,并且/或者与此完全不同Typescript 打字机脚本:";无法将命名空间用作类型";,typescript,types,module,Typescript,Types,Module,注意:我发现的所有其他问题都与角度有关,并且/或者与此完全不同 我有以下设置: 内部/action.ts: 导出类型MyAction=string; internal/functions.ts 从“/action”导入{MyAction}; const identity=(action:MyAction):string=>action; 出口{ 身份 }; internal/index.ts import*作为MyAction从“/functions”导入; 导出{MyAction}; 导
我有以下设置:
内部/action.ts
:
导出类型MyAction=string;
internal/functions.ts
从“/action”导入{MyAction};
const identity=(action:MyAction):string=>action;
出口{
身份
};
internal/index.ts
import*作为MyAction从“/functions”导入;
导出{MyAction};
导出*自“/action”;
usage.ts
从“/inner”导入{MyAction};
const action:MyAction=“”;
//这里有错误
错误:无法将命名空间“MyAction”用作类型
尽管IntelliJ提供了在代码中导航到该位置的功能
为什么不允许在两种情况下都使用相同的名称?我该怎么做才能让它们都使用相同的名称?难道
import*as MyAction
不意味着您已经创建了一个名称空间MyAction
,其中包含所有导出的内容吗?这意味着现在你有了MyAction.MyAction
作为一个类型。e、 例如,import{MyAction}from…
允许您执行const a:MyAction
,但是import*as Foo from…
允许您执行const a:Foo.MyAction
。如果我键入const action:MyAction.MyAction=“”代码>它表示名称空间…函数没有导出的成员“MyAction”
。此外,我也不能将import*与Foo
组合使用。是的,您没有从函数中导出任何内容。我不知道你为什么要建立一个大的进出口链,而不是从一个地方进口所有东西,但我想这取决于你。但是如果你想从函数导入
,你需要从中导出一些东西。我已经用导出进行了编辑。我这样做是因为这样我有一个一致的名称空间。这样,当我键入MyAction
时,环境可以帮助我-它也显示了它的相关功能<代码>导入*,因为MyAction
将强制我为各个文件中的导入指定名称。我在namespace
关键字上使用此方法,这样我就可以使1 file=1 function
规则仍然具有“namespace”。这个示例是关于导入这两个函数的,我忘记了为这个可复制的小示例将导出添加到functions.ts
。它实际上并没有改变任何东西。难道import*as MyAction
不意味着您已经创建了一个名称空间MyAction
,其中包含所有导出的内容吗?这意味着现在你有了MyAction.MyAction
作为一个类型。e、 例如,import{MyAction}from…
允许您执行const a:MyAction
,但是import*as Foo from…
允许您执行const a:Foo.MyAction
。如果我键入const action:MyAction.MyAction=“”代码>它表示名称空间…函数没有导出的成员“MyAction”
。此外,我也不能将import*与Foo
组合使用。是的,您没有从函数中导出任何内容。我不知道你为什么要建立一个大的进出口链,而不是从一个地方进口所有东西,但我想这取决于你。但是如果你想从函数导入
,你需要从中导出一些东西。我已经用导出进行了编辑。我这样做是因为这样我有一个一致的名称空间。这样,当我键入MyAction
时,环境可以帮助我-它也显示了它的相关功能<代码>导入*,因为MyAction
将强制我为各个文件中的导入指定名称。我在namespace
关键字上使用此方法,这样我就可以使1 file=1 function
规则仍然具有“namespace”。这个示例是关于导入这两个函数的,我忘记了为这个可复制的小示例将导出添加到functions.ts
。事实上,它并没有改变任何事情。