javascript - Importere en typescript-fil uten å bruke noen av eksportene


Jeg er ganske ny i TypeScript, og jeg har en main.tc hvor jeg importerer items.tc, som inneholder og eksporterer noen item-klasser, og også legger klassetypene til i et array fra itemManager.tc. Problemet er at de bare blir lagt til i arrayet hvis jeg bruker minst én eksport fra items.tc på en eller annen måte i main.tc, selv å bare logge en eksport fungerer.

Her er noen forkortede versjoner av filene mine:

main.tc

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

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

elementer.tc

import * as ItemManager from "./itemManager";

export class Item1
{
    constructor()
    {

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

itemManager.tc

export const list = [];

Hvis jeg la til console.log(Items.Item1) i min main.tc, vil ItemManger.list inneholde alle elementene, men å gjøre det er ikke ideelt. Finnes det en måte å sørge for at en importert fil blir kjørt? Eller skal jeg bruke noe annet enn importering?

Jeg bruker webpack for å kompilere det til en enkelt .js-fil, jeg vet ikke om det endrer noe.

Svar #1

Hvis du har en navngitt import og navnet ikke brukes, blir importen ignorert.

For importeringer som har bivirkninger - og ingen navn som du ønsker å bruke - kan du bruke denne syntaksen:

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

Fra dokumentasjonen:

Importer en modul kun for side-effekter

Selv om det ikke er anbefalt praksis, setter noen moduler opp en global tilstand som kan brukes av andre moduler. Disse modulene har kanskje ingen eksporter, eller forbrukeren er ikke interessert i noen av deres eksporter. For å importere disse modulene, bruk:

import "./my-module.js";

Relaterte artikler