2017-01-07 2 views
2

Я довольно новичок в TypeScript, и у меня есть main.tc, где я импортирую items.tc, который содержит и экспортирует некоторые классы элементов, а также добавляет типы классов в массив из itemManager.tc. Проблема в том, что они добавляются только в массив, если я использую atleast 1 export from items.tc в некотором роде в main.tc, даже при регистрации работы экспорта.Импорт файла машинописного текста без использования какого-либо экспорта

Вот некоторые сокращенные версии моих файлов:

main.tc

import * as Items from "./item"; 
import * as ItemManager from "./itemManager"; 

console.log(ItemManager.list) //List is empty 

items.tc

import * as ItemManager from "./itemManager"; 

export class Item1 
{ 
    constructor() 
    { 

    } 
} 
ItemManager.list.push(typeof Item1); 

itemManager.tc

export const list = []; 

Если я добавил console.log(Items.Item1) к моему main.tc, ItemManger.list будет содержать все предметы, но это не идеально. Есть ли способ убедиться, что импортированный файл запущен? или я должен использовать что-то еще, чем импортировать?

Я использую webpack для компиляции его в один .js-файл, я не знаю, что это что-то изменит.

ответ

4

Если у вас есть именованный импорт, и имя не используется, импорт игнорируется.

Для импорта, которые имеют побочные эффекты - и без каких-либо имен, которые вы хотите использовать - вы можете использовать этот синтаксис:

import "./some-module-with-side-effects"; 

С documentation по:

Импорта модуль для стороны -эффекты только

Хотя некоторые рекомендации не рекомендуются, некоторые модули устанавливают некоторое глобальное состояние, которое может использоваться другими модулями. Эти модули могут не иметь никакого экспорта, или потребитель не заинтересован в каком-либо из своих экспортных поставок. Для импорта этих модулей используйте:

import "./my-module.js"; 
Смежные вопросы