and*_*ras 5 types module typescript
注意:我发现的所有其他问题都与 Angular 相关和/或具有与此完全不同的设置。
我有以下设置:
inner/action.ts:
export type MyAction = string;
Run Code Online (Sandbox Code Playgroud)
inner/functions.ts
import { MyAction } from "./action";
const identity = (action: MyAction): string => action;
export {
identity
};
Run Code Online (Sandbox Code Playgroud)
inner/index.ts
import * as MyAction from "./functions";
export { MyAction };
export * from "./action";
Run Code Online (Sandbox Code Playgroud)
usage.ts
import { MyAction } from "./inner";
const action: MyAction = "";
// ^___ error is here
Run Code Online (Sandbox Code Playgroud)
错误:无法使用命名空间“MyAction”作为类型
尽管 IntelliJ 提供了在代码中导航到该位置的功能。
为什么不允许在这两种情况下使用相同的名称,我该怎么做才能使它们都具有相同的名称?
这里的问题在于inner/index.ts
这样做:
import * as MyAction from "./functions";
export { MyAction };
Run Code Online (Sandbox Code Playgroud)
您正在做的是导出一个名为 的命名空间MyAction,其中包括所有导出function.ts
这意味着导出的 MyAction 的值inner/index.ts是
{
identity: (action)=>action
}
Run Code Online (Sandbox Code Playgroud)
该值覆盖行中MyAction导出的值action.ts
export * from "./action";
Run Code Online (Sandbox Code Playgroud)
相反你需要做的是
export * from "./functions";
export * from "./action";
Run Code Online (Sandbox Code Playgroud)
这将导出两者identity并且MyAction没有任何重命名或命名空间
| 归档时间: |
|
| 查看次数: |
16775 次 |
| 最近记录: |