Ich implementierte einen "Least Recently Used Cache" (LRU Cache) mit einer doppelt verknüpften Liste. Die verkettete Liste besteht aus Knoten (Node
Klasse), die innerhalb einer LRUCache
Klasse verwendet werden.Wie exportiert man nur eine Klasse (die eine andere Klasse verwendet) in TypeScript (CommonJS)?
mein Modul exportieren wir folgendes Muster verwenden:
export class Node { ... }
export class LRUCache { ... }
ich mein Modul als Commonjs Modul am Export. Mit dem export class
Muster oben, ich bin in der Lage meines Modul die folgende Art und Weise zu nutzen:
var module = require('lru-cache');
var cache = new module.LRUCache();
die in Ordnung, aber ich weiß nicht wie die zusätzlichen „module.
“ -Teil vor LRUCache
. Ich möchte meine Commonjs exportiert Modul wie folgt verwenden:
var LRUCache = require('lru-cache');
var cache = new LRUCache();
Also änderte ich meinen Code in diese:
class Node { ... }
class LRUCache { ... }
export = LRUCache;
Aber jetzt Typoskript klagt mit:
Fehler TS4055: Die Rückkehr Der Typ der öffentlichen Methode aus der exportierten Klasse hat oder verwendet den privaten Namen 'Knoten'.
Es ist, weil LRUCache
verwendet die Node
Klasse und Node
wird nicht exportiert, wenn export = LRUCache;
definieren.
Wie kann ich diese Situation lösen? Ich verwende TypeScript 2.1.
Screenshot:
Tha Danke, dass du mir geholfen hast, aber das habe ich oben erklärt. Das Problem ist, dass ich den 'Klasse Knoten {...} Klasse LRUCache {...} export = LRUCache;' Code mit TypeScript nicht kompilieren kann, weil damit nur 'LRUCache' exportiert wird und eine Klasse verwendet, die nicht exportiert wird ('Node') und TypeScript mag das nicht. –
Sorry, verpasst es. Aber was ist los mit dem ersten Ansatz von 'import {LRUCache} aus" lru-cache "'? –
Kein Problem. Die Sache ist, dass ich meine LRUCache (in TS geschrieben) nicht mit TypeScript verwenden möchte. Ich möchte es in JavaScript kompilieren, damit ich es in einer Node.js-Anwendung verwenden kann (die auf JavaScript von Vanilla basiert). –