машинопись: как расширить определение существующего модуля? - PullRequest
1 голос
/ 03 февраля 2020

У меня есть файл объявления, написанный для extsting пакета npm, но кажется, что один метод не был объявлен, я пытаюсь объявить его, но получаю ошибку. Помогите мне пожалуйста.

структура существующего файла d.ts:

declare module "mongoose" {
...
  class Document {}
  interface Document extends MongooseDocument, NodeJS.EventEmitter, ModelProperties {
    increment(): this;
    remove(fn?: (err: any, product: this) => void): Promise<this>;
    ...
  }
}

Я пытаюсь добавить в интерфейс метод метода deleteOne. Мой custom.d.ts:

declare module "mongoose" {
  interface Document {
    deleteOne(fn?: (err: any, product: this) => void): Promise<this>;
  }
}

Но все равно я получаю сообщение об ошибке «Свойство deleteOne не существует для типа».

Вот мой tsconfig. json если вы нужно:

{
    "compilerOptions": {
      "module": "commonjs",
      "removeComments": true,
      "esModuleInterop": true,
      "moduleResolution": "node",
      "allowJs": true,
      "allowSyntheticDefaultImports": true,
      "pretty": true,
      "resolveJsonModule": true,
      "sourceMap": true,
      "target": "ES2018",
      "outDir": "dist",
      "baseUrl": ".",
      "paths": {
          "*": [
              "node_modules/*"
          ]
      }
    },
    "include": [
      "src/**/*"
    ],
    "exclude": [
      "node_modules",
      "dist",
      "**/*.spec.ts"
    ]
  }

Мой файл custom.d.ts находится в каталоге 'src /'.

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

определение интерфейса Mon goose

// types/mongoose/index.d.ts
declare module 'mongoose' {
  namespace Mongoose {
    export interface MyInterface {
      name: number;
    }
  }
}

использование

// app.ts
import mongoose, { Mongoose } from 'mongoose';
const a: Mongoose.MyInterface = {
  name: 122
};

Я также добавил "typeRoots": ["./node_modules/@types", "./server/types"], в мой файл tsconfig

это помогает

0 голосов
/ 10 февраля 2020

OK! Теперь я знаю, что это ожидаемое поведение ts-узла: https://github.com/TypeStrong/ts-node#help -Мой-тип-являются пропущенным Я настроил настройки путей в tsconfig. json, и теперь все работает:

    "paths": {
        "mongoose": ["src/custom.d.ts"],
        "*": [
            "node_modules/*"
        ]
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...