从模块导出类型

wiu*_*lma 6 module node.js typescript

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

这是上下文:

  • Typescript 2.7,节点 9。

    1. 具有导出函数和类型的语言环境模块 A
    2. 模块 B 添加模块 A 作为依赖项,并且它使用从 A 导出的函数和类型

在我的项目中,当我声明类型时,我更喜欢使用 @types 文件夹和 d.ts 文件。例如:

declare type Message = {
   message: string
}
Run Code Online (Sandbox Code Playgroud)

这样使用时就不需要显式导入类型了。

但我不明白如何导出它。我导出类型的唯一方法是使用接口。

export interface IMessage {
    message: string
}
Run Code Online (Sandbox Code Playgroud)

但这样我就必须在需要时在 ts 文件中导入 then 接口,我想避免这种情况。

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

Osc*_*Paz 5

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

此外,如果您这样做,您可以从模块导出类型

export type Action = () => void;
Run Code Online (Sandbox Code Playgroud)

然后你可以做

import { Action } from './module';
Run Code Online (Sandbox Code Playgroud)

它会完美地工作


Luc*_*gni 0

我认为“完全”做你想做的事情是不可能的。例如:typescript pack(来自 npm)使用interface String {..}然后导出它。因此,如果您想避免接口,我认为这是不可能的,但您可以添加自定义类型文件。

这是一个示例:How to add custom "typings" in typescript 2.0