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

Procedure for generating .d.ts from js file

本文关键字:ts 过程 js 文件      更新时间:2023-09-26

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

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

请任何人分享获取.js文件的.d.ts文件的正确过程?

谢谢,
Saravanan

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

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

你可以研究各种工具,但目前没有一种是100%的:https://github.com/borisyankov/DefinitelyTyped/issues/2103#issuecomment-41899391

尝试下面的代码。事实上,下面的代码并没有生成.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)