从js文件生成.d.ts的过程

时间:2014-04-30 03:31:17

标签: javascript typescript

我正在尝试将我的JavaScript文件转换为TypeScript定义(.d.ts)。

我无法找到自动执行此操作的工具或将.js转换为.ts或.d.ts文件的定义良好的过程。

有人可以分享获取.js文件的.d.ts文件的正确程序吗?

谢谢,
Saravanan

2 个答案:

答案 0 :(得分:11)

不幸的是,它仍然是一个手动过程。但是,您可以将.js文件转换为TypeScript .ts文件,然后typescript编译器可以使用.d.ts编译器标志为您生成-d。例如以下内容将为您提供foo.d.tsfoo.js

tsc -d foo.ts --out foo.js

您可以调查各种工具的讨论,但目前这些工具都不是100%:https://github.com/borisyankov/DefinitelyTyped/issues/2103#issuecomment-41899391

答案 1 :(得分:0)

尝试下面的代码。实际上,下面的代码不会生成.d.ts文件,但它生成的树可以编写.d.ts文件供您提供引用,它给出了大多数对象的属性类型和函数参数的数量的

var Helper = (function () {
    function Helper() {
    }
    Helper.MAX_DUMP_DEPTH = 10;
    Helper.dumpObj = function (obj, name, indent, depth) {
        if (depth > Helper.MAX_DUMP_DEPTH) {
            return indent + name + typeof(obj) +": <Maximum Depth Reached>\n";
        }
        var pre = '';
        pre = (name + '').substr(0, 1);
        if (pre == '_' || pre == '-') {
            return '';
        }
        if (typeof obj == "object") {
            var child = null;
            var output = indent + name + typeof(obj)+"\n";
            indent += "\t";
            for (var item in obj) {
                pre = (item + '').substr(0, 1);
                if (pre == '_' || pre == '-') {
                    continue;
                }
                var temp = obj[item] + '';
                try {
                    child = obj[item];
                }
                catch (e) {
                    child = "<Unable to Evaluate>";
                }
                if (typeof child == "object") {
                    output += Helper.dumpObj(child, item, indent, depth + 1);
                }
                else {
                    output += indent + item + ": " + temp.substr(0, 1 + temp.indexOf(')'))+ typeof(child) + "\n";
                }
            }
            return output;
        }
        else {
            return obj;
        }
    };
    return Helper;
})();


Helper.dumpObj(yourobj,"yourobj","    ",0)