javascript - Importera en typescript-fil utan att använda någon av exporterna


Jag är ganska ny på TypeScript och jag har en main.tc där jag importerar items.tc, som innehåller och exporterar några item-klasser, och dessutom lägger till klasserna i en array från itemManager.tc. Problemet är att de bara läggs till i arrayen om jag använder minst 1 export från items.tc på något sätt i main.tc, även bara genom att logga en export fungerar.

Här är några förkortade versioner av mina filer:

main.tc

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

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

artiklar.tc

import * as ItemManager from "./itemManager";

export class Item1
{
    constructor()
    {

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

itemManager.tc

export const list = [];

Om jag lade till console.log(Items.Item1) i min main.tc, kommer ItemManger.list att innehålla alla objekt, men att göra det är inte optimalt. Finns det ett sätt att se till att en importerad fil körs? Eller ska jag använda något annat än importering?

Jag använder webpack för att kompilera det till en enda .js-fil, jag vet inte om det förändrar något.

Svar #1

Om du har en namngiven import och namnet inte används, ignoreras importen.

För importeringar som har sidoeffekter - och inga namn som du vill använda - kan du använda denna syntax:

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

Från dokumentationen:

Importera ett modul endast för bieffekter

Även om det inte är rekommenderad praxis, sätter vissa moduler upp ett globalt tillstånd som kan användas av andra moduler. Dessa moduler kanske inte har några exports, eller så är konsumenten inte intresserad av några av deras exports. För att importera dessa moduler, använd:

import "./my-module.js";

Relaterade artiklar