简体   繁体   English

如何为这个 javascript 库编写打字稿定义文件?

[英]how to write typescript definition file for this javascript library?

I need call the following javascript:我需要调用以下 javascript:

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

return publicMethods;
})();

I am new to typescript, can you please share what the typescript definition will look like for the javascript above and invoke pattern?我是打字稿的新手,你能分享一下上面 javascript 的打字稿定义和调用模式的样子吗?

Thanks in advance.提前致谢。

I'm assuming the following directory structure我假设以下目录结构

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

jslib.js jslib.js

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

  return publicMethods;
})();

module.exports = jslib;

jslib.d.ts jslib.d.ts

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

export = jslib;

t.ts ts

import jslib = require('../lib/jslib');

jslib.encript();

Check with node_modules/.bin/tsc --traceResolution检查node_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'. ========

It is crucial to put jslib.js and jslib.d.ts in the same directory.jslib.jsjslib.d.ts放在同一目录中至关重要。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM