60
задан 26 March 2018 в 18:38

3 ответа

globalThis является будущим.

// Way 1
var abc: number
globalThis.abc = 200 // no error

// Way2
declare var age: number
globalThis.age = 18 // no error

ПРИМЕЧАНИЕ: файл, который содержит выше кодов, не мог иметь никакого import оператор

До сих пор, это способы, которыми я выяснил для расширения глобального объекта.

Все волшебство прибывает от var. Замена var с let или const не будет работать.

я пытался расширить модуль globalThis на слияние объявления , но отказавший.

3
ответ дан 1 November 2019 в 10:42

Это - то, как я зафиксировал его:

Шаги:

  1. Объявленный глобальным пространством имен, для, например, custom.d.ts как указано ниже:

    объявляют глобальный {пространство имен NodeJS {интерфейс Global {Конфигурация: {} } }} экспортируют глобальное значение по умолчанию;

  2. вышеупомянутое Карты создало файл в "tsconfig.json" как указано ниже:

    "typeRoots": ["src/types/custom.d.ts"]

  3. Получают вышеупомянутую созданную глобальную переменную в любом из файлов как указано ниже:

    console.log (global.config)

Примечание:

  1. версия машинописного текста: "3.0.1".

  2. В моем случае, требование состояло в том, чтобы установить глобальную переменную, прежде чем загрузит приложение, и переменная должна получить доступ всюду по зависимым объектам так, чтобы мы могли получить необходимые свойства конфигурации.

Hope это помогает!

Спасибо

1
ответ дан 1 November 2019 в 10:42

Я провел часы пары для выяснения надлежащего способа сделать это. В моем случае я пытаюсь определить глобальную переменную "журнала", таким образом, шаги были:

1) настраивают Ваш tsconfig.json для включения определенных типов (src/types, папка, node_modules - ваше дело):

...other stuff...
"paths": {
  "*": ["node_modules/*", "src/types/*"]
}

2) создают файл src/types/global.d.ts со следующим содержанием ( никакой импорт! - это важно), не стесняйтесь изменяться any для соответствия потребностям + использование window интерфейс вместо NodeJS, если Вы работаете с браузером:

/**
 * IMPORTANT - do not use imports in this file!
 * It will break global definition.
 */
declare namespace NodeJS {
    export interface Global {
        log: any;
    }
}

declare var log: any;

3) теперь можно наконец использовать/реализовывать log где его необходимое:

// in one file
global.log = someCoolLogger();
// in another file
log.info('hello world');
// or if its a variable
global.log = 'INFO'
0
ответ дан 1 November 2019 в 10:42

Другие вопросы по тегам:

Похожие вопросы: