什么是 "DefinitelyTyped"?

What is "DefinitelyTyped"?

我看到 "DefinitelyTyped" 与 TypeScript/JavaScript 开发有关,但我无法理解它的用途或一些代码示例来理解它。

我看了 http://definitelytyped.org/ and http://bartvds.github.io/projects/dt.html 但没能更好地理解它。

非常感谢任何指示、文章、代码示例。

TypeScript 允许您拥有 Declaration Files which are files that allow you to describe the shape 以(例如)普通 JavaScript 编写的代码。因此,通过引用其中一个文件,您可以准确地告诉 TypeScript 您正在使用的 JavaScript 代码或库应该如何假定为 "typed"。当然,这意味着声明文件需要仔细编写并与您正在使用的JavaScript库同步。

DefinitelyTyped 是许多 JavaScript 库中最受欢迎的声明文件存储库,其中大多数库不提供自己的声明文件(因为它们不是使用 TypeScript 开发的,也不致力于使用它) .因此它包含由社区维护的声明文件。

通过使用 DefinitelyTyped 及其包含的声明文件,您可以像使用 TypeScript 库一样使用大多数流行的 JavaScript 库,因为您将通过编译器进行类型验证(作为声明文件表示)。此外,由于如此受欢迎,DefinitelyTyped 将由社区策划以包含有效的声明文件(尽管 Web 开发发展得非常快,您最终可能会在晦涩的库中发现一些问题)。

上面的描述很清楚,但是,如果你像我一样,也许下面的代码可以帮助你了解全局。

例如,你的项目中有lodash个包,你导入并使用它的一个方法。

import random from 'lodash/random';

const result = random(????);

您可能会停下来想知道这个方法可能需要多少参数?每个参数的数据类型是什么?你必须搜索 lodash 主页,找到 random 的 API 文档才能知道如何使用它。完成一堆任务后,您可能最终会提供错误的参数顺序,但直到您 运行 您的应用程序出现错误时才会显示任何内容。

这就是DefinitelyType显示其威力的地方。安装 lodash 的 DefinitelyType 后

yarn add @types/lodash
  • 当您开始输入 random 方法时,工具提示将显示并指导您如何使用这些参数。
  • 当您提供错误的参数数据类型时,它会显示错误以便让您知道并立即修复。

有道理吗?如果没有,别担心,关掉音乐听听这个video,相信你会明白的。