node.js - Typescript - האם אני יכול "לחבר" טיפוסים ממודול אחד למודול אחר?


רקע

ל-Node יש חבילה שנקראת path שיש לה קובץ הגדרות סוגים משויך בתוך חבילת npm @types/node. מישהו יצר חבילת צד-לקוח שנקראת path-browserify שמכילה את אותו ממשק תכנות אפליקציות אך ללא סוגים.

שאלה

האם אני יכול להוסיף את סוגי @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 נכון. האם יש דרך טובה יותר להשתמש בהגדרות טיפוס אלה? עדיף מבלי להעתיק את ה-API של path.

תשובה #1

נראה שאתה על המסלול הנכון. אתה יכול לעשות משהו כזה?

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

לגבי השימוש שלך, נסה את הפעולה הבאה (במקום להשתמש בתחביר * as)

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

ליד העניין, האם למודול path בכלל יש ייצוא ברירת מחדל ... ?