Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
Node.js 从模块导出类型_Node.js_Typescript_Module - Fatal编程技术网

Node.js 从模块导出类型

Node.js 从模块导出类型,node.js,typescript,module,Node.js,Typescript,Module,我用ts编写代码已经有一段时间了,但我仍然不明白witch是从模块导出函数和类型的正确方法 这就是背景: 类型脚本2.7,节点9 具有导出函数和类型的区域设置模块A 模块B将模块A添加为dependecy,并使用从A导出的函数和类型 在我的项目中,当我声明类型时,我更喜欢使用@types文件夹和d.ts文件。例如: declare type Message = { message: string } 这样,在使用类型时就没有必要显式导入类型 但我无法理解我如何才能出口它。 我可以导

我用ts编写代码已经有一段时间了,但我仍然不明白witch是从模块导出函数和类型的正确方法

这就是背景:

  • 类型脚本2.7,节点9

  • 具有导出函数和类型的区域设置模块A
  • 模块B将模块A添加为dependecy,并使用从A导出的函数和类型
在我的项目中,当我声明类型时,我更喜欢使用@types文件夹和d.ts文件。例如:

declare type Message = {
   message: string
}
这样,在使用类型时就没有必要显式导入类型

但我无法理解我如何才能出口它。 我可以导出类型的唯一方法是使用接口

export interface IMessage {
    message: string
}
但在这种情况下,我必须在需要时在ts文件中导入then接口,我希望避免这种情况


你能帮我理解正确的方法吗?

我认为这不可能“准确地”做你想做的事。例如:typescript包(来自npm)使用
接口字符串{..}
,然后将其导出。所以,如果您想避免使用接口,我认为这是不可能的,但您可以添加自定义打字文件


下面是一个示例:

如果需要导出其他项目使用的类型,请更改
tsconfig.json
并添加
声明:true
。这将使TypeScript编译器为所有类型发出声明文件

此外,如果需要,可以从模块导出类型

export type Action = () => void;
那你就可以了

import { Action } from './module';

而且它可以完美地工作

为什么需要导出这些类型?你的意思是将它们导出以供其他项目使用?因为,正如您所说,通过创建
d.ts
文件,类型不需要导入是的,我想导出类型以便被其他项目使用。一种可能的解决方案:index.d.ts:declare type MessageType={message:string;}index.ts:export接口IMessageType扩展MessageType{}我已经启用了该标志,但它似乎没有像typescript 2.8.1中的expeted那样工作。这不能与
“isolatedModules”一起使用:true,
,这似乎是
创建反应应用程序
需要的。。。