簡體   English   中英

在 index.d.ts npm 模塊中包含自定義類型

[英]Include custom Typings in index.d.ts npm module

我目前正在為mongoose寫一個插件。 現在,當我使用 TypeScript 時,我遇到了以下情況。 我必須擴展現有的界面。 這沒問題。 盡管如此,為了完整起見,我還是會把它寫下來

src/打字/mongoose.d.ts

declare module 'mongoose' {
  export interface SomeExistingMongooseInterface {
    MyNewOption?: FancyOptionInterface
  }
}

將通過聲明合並擴展現有接口

我在我的 tsconfig 中包含了 typeRoot

tsconfig.json

"compilerOptions" : {
  ...
  "typeRoots": {
    "src/types",
    "node_modules/@types"
  }
}

在構建我的 npm 模塊時,我也使用 --declare 標志來導出類型。 現在的問題是,找不到自定義類型。 當然我可以手動將它的內容添加到我的。 /dist/index.d.ts可以工作,但這不是一個真正的選擇,因為它不能自動化並且會留下很多錯誤空間。

是否有任何最佳實踐以與 typescript 編譯器或至少 npm 模塊一起使用的方式來執行此操作?

好的。 我終於讓它工作了。 這是我為實現所做的

npm 模塊中第三方 npm 模塊的自定義類型

無需編寫 .d.ts 文件,只需切換到常規 .ts 文件即可。 所以就我而言

源代碼/類型/貓鼬.ts

declare module 'mongoose' {
  export interface SomeExistingMongooseInterface {
    MyNewOption?: FancyOptionInterface
  }
}

第二步是在您的應用程序中導入此文件。 我只是發現將它添加到根文件中很方便

源代碼/索引.ts

import "./types/mongoose"

這已經是了。 沒什么可做的。 當構建應用程序的打字稿編譯器現在將在dist / src目錄/類型generade一個mongoose.d.ts文件夾,將在之后公布。

一切正常,如果您選擇將其發布到 npm,您的用戶也將受益於第三方界面的擴展。

您也可以在主根文件之一中執行此操作-

/// <reference path="./path/to/your/src/typings/mongoose.d.ts" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM