介绍
@ava/typescript 是一个 TypeScript 类型定义文件的npm包,它可以为后续AVATest项目中的TypeScript文件添加类型检查,并且可以确保在编写测试时候,正确使用了函数和方法。
在这篇文章中,我们将学习如何在项目中使用 @ava/typescript 来实现 TypeScript 类型定义的深度学习和指导。
安装
如果您的项目已经使用了 TypeScript,使用 npm 命令行工具安装 @ava/typescript 十分简单:
npm install --save-dev @ava/typescript
这个命令将会在您的项目中安装最新版本的 @ava/typescript。
配置
将 @ava/typescript 安装到项目中后,我们需要在 AVA 的配置中添加一些额外的配置。
-- -------------------- ---- ------- - ------ - ------------- ------- ---------------------- ------ ---------- -------------------- ------------- - ------------- ------- -------- ----- - - -
extensions
定义需要运行 AVA 测试标记的文件扩展名compileEnhancements
防止AVATEST编译TypeScript文件require
定义需要在执行测试之前加载的模块typescript.extensions
定义可以运行 TypeScript 测试标记的文件扩展名typescript.babel
告诉 AVA 是否应该使用 Babel 来转译 TypeScript 文件
使用
通过上述配置可以让 AVA 正确处理 TypeScript 文件,但是我们想要在测试中使用 TypeScript 的类型检查功能,进一步提高测试的验证效率。
为了实现这个目的,我们需要对 test
文件进行改进。
test('Should return 4 when adding 2 and 2', (t) => { const sum = (n: number, m: number) => n + m t.is(sum(2, 2), 5) })
这条示例测试目前能够正常运行,但涉及到的所有变量类型都是 TypeScript 在推断后默认的任意类型(即 any
类型),这并不满足我们使用 TypeScript 的初衷,我们可以加入一些类型声明来使我们的代码更加规范,完整的示例代码如果如下:
-- -------------------- ---- ------- ------ ----- - ---------------- - ---- ----- --------- ---------- - -- ------ -- ------ ------- ------ - ----- --- - -- -- - -- - -- ------- -- ------ --- ---------- -- -- -- -- ------- - - -- -- ------------ --- --- --------- --- ----------------- -- - ----- - ------ - - ----- -- -- -- - -- ------------ -- --
这里我们对一个简单的加法函数进行了类型定义,并且在测试中使用它来比较结果。
结论
在这篇文章中,我们学习了如何在 AVA 测试中使用 TypeScript 的类型定义。@ava/typescript 包提供了更深度的类型检查和验证能力,这为我们的开发与测试工作带来了极大的效率提升。
参考
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/ava-typescript