测量无类型javascript - >打字稿转换进度?

时间:2016-11-23 14:20:07

标签: javascript typescript

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

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

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

这可能吗?打字稿编译器可以通过任何机会给出这种统计数据吗?

1 个答案:

答案 0 :(得分:1)

因此,您希望衡量代码的类型安全性。简短的回答:我不知道任何简单的方法,告诉我你是否找到了什么: - )

问题是,即使您的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编译项目并计算它产生的错误数量 - 这将为您提供编译器无法推断出合理类型的所有位置并且只使用{{1} }。此外,您可以捕获所有使用any声明某些内容的实例,这些实例基本上可以通过使用tslint no-any规则绕过类型检查。

但是在一个真实的项目中,你通常也有许多依赖关系,这些依赖关系不是那么严格,或者只是因为它们不完美。而且我不认为有一种方法可以判断any是否出现,因为您的开发人员添加的代码不是类型安全的,或者是因为某些第三方依赖需要这样。< / p>