node.js - Typescript - 我可以从一个模块到另一个模块输入 "bolt-on"类型吗?

标签 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。

最佳答案

看来您走在正确的道路上。你能做这样的事情吗?

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

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

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

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

关于node.js - Typescript - 我可以从一个模块到另一个模块输入 "bolt-on"类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56594448/

相关文章:

node.js - 如何检测 browserify 何时运行?

node.js - 乔基达尔 : onchange event for a file is possibly triggered to fast

node.js - 如何找到我的 mongoDB 的远程 URL 以在我的 Node.js 代码中使用?

javascript - 如何按子对象对对象数组进行分组?

gulp - 使用 Babelify 和 Browserify 在 Gulp 中添加 babel/polyfill

javascript - 如何使用 browserify 包含非 Node 模块

node.js - 无法确定 Mongoose SSL 与 DocumentDB 的连接错误

javascript - Express Router GET 请求 console.log 显示未定义的请求参数

javascript - Nest JS GraphQL “Cannot return null for non-nullable”

TypeScript:迭代接口(interface)字段不起作用