【问题标题】:Typescript - Can I "bolt-on" types from one module to another module?Typescript - 我可以将类型从一个模块“固定”到另一个模块吗?
【发布时间】:2019-06-14 08:36:40
【问题描述】:

背景

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

问题

我可以固定@types/node 类型的pathpath-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。

【问题讨论】:

    标签: node.js typescript browserify


    【解决方案1】:

    你看起来是在正确的轨道上。你能做这样的事情吗?

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

    至于你的用法,试试下面的(而不是使用* as语法)

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

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

    【讨论】:

    • 谢谢伙计,你的回答完全符合我的要求!
    猜你喜欢
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    相关资源
    最近更新 更多