Обратитесь к глобальному объявленному типу пространства имен в пользовательском определении - PullRequest
0 голосов
/ 03 мая 2019

В этой теме был прошлый вопрос, но ответа не было:

Как импортировать файл определения типа Typescript, элемент верхнего уровня которого является неэкспортированным пространством имен?

Я хочу создать тип для testdouble-jest, но вторым аргументом в экспортируемой функции является глобальный экземпляр jest, который объявлен в @types/jest как объявленное пространство имен верхнего уровня:

declare namespace jest {
  mock(): something
  // ...
}

РЕДАКТИРОВАТЬ: вот типы: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/jest/index.d.ts

Как я могу сослаться на этот глобальный объект в моем объявлении test-double.d.ts? Моя декларация выглядит следующим образом, но с частичным успехом:

/// <reference types="jest" />
// do i actually need the above directive?

declare module "testdouble-jest" {
  import * as td from "testdouble"; // the testdouble stuff works
  export type TestdoubleJest = typeof td & {
    mock: typeof jest.mock;  // this actually appears to work
  };
  function setupTestdoubleJest(
    testdouble: typeof td,
    jest: typeof jest // this just resolves to any
  ): TestdoubleJest;

  export = setupTestdoubleJest;
}

Если кто-нибудь знает, как это сделать, я буду очень признателен!

РЕДАКТИРОВАТЬ: Есть несколько примеров того, как на DefiniteTyped люди либо увеличивают пространство имен 'jest', либо используют его члены (как я это сделал с jest.mock), но я не могу найти один, ссылающийся на реальный глобальный jest объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...