前端测试 - 静态类型检测(Flow, TypeScript)

静态类型检测

1.概念

先要分清楚,强类型和弱型、静态类型和动态类型是两不同的概念,弱是针对类转换是否示来区分,静动态类型是针对类检查机来区分。

态类言和动态类言得核心区在于,静态类言(statically-typed languages)会在编译时compile time检查,而动态语言(dynamically-typed是在运行时进检查runtime)

例如java中,定义一个boolean值:

boolean result = true;

这个变量就有了一个正确的类型,因为boolean类型的声明和这个变量给定的值是相符的。

在另一方面,如果你尝试这么来声明这个变量:

boolean result =123;

由于变量result有一个错误的类型,因此会编译失败。因为我们在之前已经明确地声明了result是一个boolean类型,所以这里的整型值123赋给了它会报错编译失败。

而在JavaScript和其他一些动态类型语言有着不同的处理方法,可以定各种量、方法、象而不需要声明它的型。他们允许上下文环境来确定数据需要被定义为什么类型,变量的类型是可以随时改变的:

var result = true;

也就是说动态类型语中的变量类型是被隐去的。

这就意味着,对于写动态类型语言的程序员而言,即使代码中包含了会在运行时阻止脚本正常运行的错误类型,这段代码也可以通过编译。

在另一方面,如果一个写静态语言的程序员写了一段包含了类型错误的代码,那么除非修复这个错误,否则会一直编译失败。

2.静态类型检测的意义与好处

意义:静态类型检测有利于构建大型应用。

好处:

1.在大型应用中,由于js语言的特性,测试调试分支覆盖困难,很多代码并不能执行到,即会存在有些代码改动不会简单的体现到UI层面上。而静态类型检测能做到即使编写的代码没执行到,在编译阶段即可发现代码中的类型不匹配。

2.静态类型检测是一种数据类型上的提示和规范。对阅读代码和后期维护友好,数据格式直观。

3. TypeScript 与Flow

正式因为js没有静态类型检测,所以有些变量类型相关的问题只能在运行阶段暴漏出来。为了解决这个问题,因此有了ts ,Flow等工具库。

 

Flow 是 Facebook 开发和发布的一个开源的静态类型检查库,它允许你逐渐地向你的 JavaScript 代码中添加类型。可以在代码阶段就检测出对变量的不恰当引用。避免undefined is not a function」之错误。而且由于型固定了,在v8 上的行效率会更高。

 

TypeScript 是微软出品的,一个会编译为 JavaScript 的超集(尽管它看起来几乎像一种新的静态类型语言),这意味着,它使用起来会感觉和 JavaScript 很像,并不难上手。为 TypeScript 提供了很多强类言的功能,所以可以使得代更健壮,编译后的代也是针对V8 js 引擎的,所以行效率也不会太慢。

 

不论是使用上面哪种工具,当你想要使用类型时,你会明确告诉工具哪个(些)文件需要类型检查。对于 TypeScript ,你需要将.js文件拓展名改为.ts。对于 Flow ,你需要在文件的顶部引入一段标注@flow。

一旦你声明了想要对某一个文件进行类型检查,你需要使用他们各自的语法去定义类型。这两个工具的一个区别在于,Flow 是一个类型“检查器”而不是一个编译器。TypeScript则是一个编译器。

有关 Flow 与 TypeScript 的语法,可参考官方文档自行学习。

Flow : https://flow.org/en/docs/types/functions/

TypeScript : http://www.typescriptlang.org/

3.1 搭配eslint ,tslint,语法规则和代码风格检测

ESLint 是插件化的 Javascript 码检测工具,它可以用于检查的 JavaScript 码错误,也可以行代码风检查这样就可以根据自己的喜好指定一套 ESLint 配置,然后用到所写的目上,从而实现辅助编码规范的执行,有效控制项目代码的质

Tslint 和 ESlint 工作方式相同,是检查TypeScript的最好选择。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSON Schema to TypeScript 是一个将 JSON Schema 转换为 TypeScript定义的工具。JSON Schema 是一种用于描述 JSON 数据结构的语言,它定义了数据的类、格式以及数据之间的关系。而 TypeScript 是一种静态类的脚本语言,它为 JavaScript 提供了静态类检查和支持,增加了代码的可读性和可维护性。 使用 JSON Schema to TypeScript 工具,我们可以将 JSON Schema 文件转换为 TypeScript定义文件,以便在编写 TypeScript 代码时能够方便地使用这些类定义。这样做的好处是,我们可以在编写代码时利用类检查来减少错误并提高代码的质量。 例如,假设我们有一个 JSON Schema 文件描述了一个用户对象的结构,包括用户名、年龄和地址。我们可以使用 JSON Schema to TypeScript 工具将这个 JSON Schema 转换为一个 TypeScript定义文件,其中包含了对应的 TypeScript 接口或类: ```typescript interface User { username: string; age: number; address: string; } ``` 这样,我们就可以在 TypeScript 代码中使用这个 User 类定义,例如: ```typescript const user: User = { username: "John", age: 20, address: "123 Main St", }; console.log(user.username); // 输出 "John" console.log(user.age); // 输出 20 console.log(user.address); // 输出 "123 Main St" ``` 通过将 JSON Schema 转换为 TypeScript定义,我们可以确保在编写 TypeScript 代码时使用正确的数据类,并减少因类错误而引发的bug。JSON Schema to TypeScript 工具为我们提供了更好的类安全性和代码可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值