javascript - 测量 untyped-javascript -> typescript 转换进度?

标签 javascript typescript

好的,所以我完全相信 TypeScript 的想法,我想将它用于现有的软件项目。现在,由于 Typescript 是 javascript 的超集,这意味着我可以先将所有文件重命名为具有 .ts 扩展名而不是 .js,然后逐渐开始转换。

但是,我在团队中并不孤单,所以我可能会一点一点地进行转换,但其他开发人员会继续使用 .ts 文件中顽皮的未类型化 JavaScript 来增加代码库的大小。

然后我的想法是有一种方法来衡量一个项目有多少百分比的真实 TypeScript(非 JavaScript),以避免通过持续集成(例如,当 TS 速率降低时中断构建),我们去向后。

这可能吗? typescript 编译器是否可以提供这种统计数据?

最佳答案

看来您想衡量代码的类型安全性。简短回答:我不知道有什么简单的方法,如果你找到了什么请告诉我 :-)

问题是,即使您的 javascript 是无类型的,也不意味着您在使用 typescript 编译它时没有对其进行类型检查。 Typescript 编译器通常可以为未类型化的 javascript 代码推断类型:

function f() {
    return { a: 'a', b: 1 };
}

var x = f();
var y = x.b;

var z = x.c; // error
y = y + '1'; // error

它确实让开发人员的生活更轻松,但这意味着衡量您想要的东西并不那么容易。您可以做的一件事是尝试使用 --noImplicitAny 编译您的项目并计算它产生了多少错误 - 这将为您提供编译器无法推断出合理类型的所有地方,然后就去了使用任何。此外,您可以捕获所有使用 tslint no-any 基本上绕过类型检查的 any 声明的实例。规则。

但在实际项目中,您通常还会有许多类型不那么严格的依赖项,这可能是必要的,也可能只是因为它们不完美。而且我认为没有办法判断 any 的出现是因为您的开发人员添加了类型不安全的代码,还是因为某些第三方依赖项需要它。

关于javascript - 测量 untyped-javascript -> typescript 转换进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40766948/

相关文章:

typescript - 如何描述函数的返回类型,它是调用传递的泛型函数的结果

angularjs - 嵌入 ngx-monaco-editor 时没有 InjectionToken 提供者

javascript - 纯 JS 添加类不起作用

javascript - 选择附加项目 jquery

javascript - 当我从另一个页面将内容加载到 div 时,JqueryDatepickers 和数据表未启动

angular - 如何对 *ngFor 应用过滤器?

javascript - 如何在 JQuery 函数中定义一个值,然后调用另一个函数并使用该值?

javascript - 从 DOM 中修改/删除后恢复节点/元素

typescript Jest 全局变量示例

javascript - Express 和 Typescript - Error.stack 和 Error.status 属性不存在