Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 打字机脚本:";无法将命名空间用作类型";_Typescript_Types_Module - Fatal编程技术网

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
。事实上,它并没有改变任何事情。