如何为这个javascript库编写typescript定义文件?

如何为这个javascript库编写typescript定义文件?,javascript,typescript,definition,Javascript,Typescript,Definition,我需要调用以下javascript: var jslib = jslib || (function() { var publicMethods = { encrypt: function (algorithm, keyHandle, buffer) { // implementation } }; return publicMethods; })(); 我是typescript新手,你能分享一下上面javascript的typescript定义和调用模式吗 提

我需要调用以下javascript:

var jslib = jslib || (function() {
var publicMethods = {
    encrypt: function (algorithm, keyHandle, buffer) {
        // implementation
    }
};

return publicMethods;
})();
我是typescript新手,你能分享一下上面javascript的typescript定义和调用模式吗


提前谢谢。

我假设以下目录结构

├── lib
│   ├── jslib.d.ts
│   └── jslib.js
├── src
    └── t.ts
jslib.js

var jslib = jslib || (function () {
  var publicMethods = {
    encript: function () {
      return
    }
  };

  return publicMethods;
})();

module.exports = jslib;
jslib.d.ts

declare namespace jslib {
  function encript(): void;
}

export = jslib;
t、 ts

使用
node\u modules/.bin/tsc--traceResolution检查

======== Resolving module '../lib/jslib' from '/home/zjk/dev/webnote/ts1/src/t.ts'. ========
Explicitly specified module resolution kind: 'NodeJs'.
Loading module as file / folder, candidate module location '/home/zjk/dev/webnote/ts1/lib/jslib'.
File '/home/zjk/dev/webnote/ts1/lib/jslib.ts' does not exist.
File '/home/zjk/dev/webnote/ts1/lib/jslib.tsx' does not exist.
File '/home/zjk/dev/webnote/ts1/lib/jslib.d.ts' exist - use it as a name resolution result.
Resolving real path for '/home/zjk/dev/webnote/ts1/lib/jslib.d.ts', result '/home/zjk/dev/webnote/ts1/lib/jslib.d.ts'
======== Module name '../lib/jslib' was successfully resolved to '/home/zjk/dev/webnote/ts1/lib/jslib.d.ts'. ========

jslib.js
jslib.d.ts
放在同一个目录中是至关重要的。

谢谢zjk。我有两个愚蠢的问题1)在javascript中,如何理解var jslib=jslib | | function(),我不明白为什么jslib需要在回答中的“=”2)之后再次出现,const jslib是什么意思?对不起,我对这两个脚本都是绿色的..@SkyLine。好问题!我不是专家。我会更新我的答案我还没有尝试我的答案。我稍后会展开它。至于
var jslib=jslib | | function()
,如果已经定义了整个jslib,它可以阻止重新定义。谢谢@zjk。我期待着你的更新:)@SkyLine我必须承认,我对这个问题的理解还不足以回答这个问题。抱歉耽搁了。
======== Resolving module '../lib/jslib' from '/home/zjk/dev/webnote/ts1/src/t.ts'. ========
Explicitly specified module resolution kind: 'NodeJs'.
Loading module as file / folder, candidate module location '/home/zjk/dev/webnote/ts1/lib/jslib'.
File '/home/zjk/dev/webnote/ts1/lib/jslib.ts' does not exist.
File '/home/zjk/dev/webnote/ts1/lib/jslib.tsx' does not exist.
File '/home/zjk/dev/webnote/ts1/lib/jslib.d.ts' exist - use it as a name resolution result.
Resolving real path for '/home/zjk/dev/webnote/ts1/lib/jslib.d.ts', result '/home/zjk/dev/webnote/ts1/lib/jslib.d.ts'
======== Module name '../lib/jslib' was successfully resolved to '/home/zjk/dev/webnote/ts1/lib/jslib.d.ts'. ========