我实施了一个"最近最少使用的缓存" (LRU Cache)使用双向链表。链表由Node
类中使用的节点(LRUCache
类)组成。
要导出我的模块,我使用以下模式:
export class Node { ... }
export class LRUCache { ... }
我将我的模块导出为CommonJS模块。使用上面的export class
模式,我可以通过以下方式使用我的模块:
var module = require('lru-cache');
var cache = new module.LRUCache();
没关系,但我不喜欢额外的" module.
"部分在LRUCache
前面。我想像我这样使用我的CommonJS导出模块:
var LRUCache = require('lru-cache');
var cache = new LRUCache();
所以我将代码改为:
class Node { ... }
class LRUCache { ... }
export = LRUCache;
但现在TypeScript抱怨:
错误TS4055:导出类的公共方法的返回类型具有或正在使用私有名称'节点'。
这是因为LRUCache
使用了Node
类,并且在定义Node
时未导出export = LRUCache;
。
我该如何解决这种情况?我正在使用TypeScript 2.1。
截图:
答案 0 :(得分:1)
使用打字稿,你可以做到:
import { LRUCache } from "lru-cache";
let cache = new LRUCache();
它将编译成:
var lru_cache_1 = require("./lru-cache");
var cache = new lru_cache_1.LRUCache();
如果您更喜欢使用require
,则可以:
class Node { ... }
class LRUCache { ... }
export = LRUCache;
然后:
import LRUCache = require('lru-cache');
var cache = new LRUCache();
您可以在以下两个文档页面中找到更多相关信息: