Typescript - 我可以 "bolt-on" 从一个模块输入到另一个模块吗?

Typescript - Can I "bolt-on" types from one module to another module?

背景

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

问题

我可以 path@types/node 类型与 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.

你看起来走对了路。你能做这样的事吗?

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

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

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

顺便说一句,path 模块是否有默认导出...?