Typescript: объявить тип в файле .d.ts и использовать его без импорта - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу знать, как правильно использовать типы или интерфейсы, не импортируя их напрямую (если это хорошая идея).

В настоящее время у меня есть этот код:

import { TCollection } from "../__types__";

function doSomething(collection: TCollection) {
  // ...
}

Итак, чтобы избавиться от оператора import, я попытался заменить typeRoots внутри tsconfig.json на это значение:

{
  "compilerOptions": {
    ...
    "typeRoots": ["./src/__types__/types.d.ts", "./node_modules/@types"],
  }
}

И объявил тип в ./src/__types__/types.d.ts:

declare type TCollection = {
  ...
};

Но все равно с ошибкой:

function doSomething(collection: TCollection) {
                                 ^^^^^^^^^^^
                                 Cannot find name 'TCollection'.ts(2304)
}

Я сделал ошибку или это IDE ошибка или что-то? Спасибо

1 Ответ

0 голосов
/ 14 апреля 2020

вы можете определить типы в глобальной области видимости:

// global-types.d.ts
import { Something } from "somewhere";

declare global {
  interface TCollection {
    ...
  }
}

, если вам не нужно ничего импортировать в global-types.d.ts, вы можете просто объявить интерфейс напрямую:

// global-types.d.ts
import { Something } from "somewhere";

interface TCollection {
  ...
}

нет необходимости вносить изменения в tsconfig

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