打字稿-我可以从一个模块“推入”类型到另一个模块吗?

时间:2019-06-14 08:36:40

标签: node.js typescript browserify

背景

Node有一个名为path的软件包,该软件包在@types/node npm软件包中具有与之关联的类型定义文件。有人制作了一个名为path-browserify的客户端程序包,该程序包具有相同的api 但没有类型。

问题

我可以将@types/node类型的path螺栓连接到path-browserify上吗?基本上,我想在一个地方使用不同名称的类型。我已经尝试过了:

// types.d.ts
declare module 'path-browserify' {
  export {default} from 'path'
}

// usage.ts
import * as path from 'path-browserify'

const joined = path.join('/', 'file');
// ^ COMPILE ERROR: join not found

const joined = path.default('/', 'file'); 
// ^ RUNTIME ERROR: default not found 

但是我无法正确访问api。有没有更好的方法来使用这些类型定义?最好不要复制path api。

1 个答案:

答案 0 :(得分:1)

您看起来好像在正确的轨道上。你可以做这样的事情吗?

declare module 'path-browserify' {
  import path from 'path'
  export default path
}

关于您的用法,请尝试以下操作(而不是使用* as语法)

import path from 'path-browserify'
path.resolve(...)

顺便说一句,path模块甚至还具有默认导出功能吗??