Как использовать импорт с ключевым словом "declare" в TypeScript? - PullRequest
2 голосов
/ 21 июня 2020

У меня есть файл d.ts с объявлением переменной, например:

declare var $: () => SomeValue;

И он работает хорошо, в других местах я могу использовать эту переменную без импорта.

Но когда я добавляю импорт из другого модуля, эта переменная не видна из другого кода.

import { SomeValue } from "./SomeModule";
declare var $: () => SomeValue;

Какой синтаксис для этого нужен?

Ответы [ 2 ]

2 голосов
/ 21 июня 2020

Когда файлы .d.ts используют export или import, они обрабатываются как module, а не как окружающие typings.

Однако вы все равно можете добавить в глобальное пространство имен, используя declare global. Это позволяет вам расширять глобальные типы и даже добавлять новые глобальные типы:

.d.ts

import { SomeValue } from "./SomeModule";

declare global {
    interface Window {
        $: () => SomeValue;
    }
    interface SomeGlobalInterface {
        x: number;
    }
}

.ts

// () => SomeValue
window.$

let value!: SomeGlobalInterface;
value.x;
0 голосов
/ 21 июня 2020

Вам нужно будет добавить к переменной ключевое слово «экспорт».

export declare var $: () => SomeValue;

Если вы хотите, чтобы эта переменная была доступна только в том же файле, то нет необходимости добавлять «экспорт» ключевое слово. Однако, если вы хотите, чтобы он использовался в других файлах, вам нужно добавить ключевое слово «экспорт».

То же самое касается констант, функций и классов. Добавление к нему «экспорта» сделает его доступным для импорта другими файлами.

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