为什么React源代码是用JavaScript而不是TypeScript编写的,但仍然有类型?

问题描述 投票:0回答:1

我最近在阅读React源代码,发现所有文件都是

.js
而不是
.ts

更让我震惊的是,在那些

.js
文件中,它们实际上使用的是TypeScript语法,包括类型和所有内容......

这可能是超级无知,但这是否是某种高级黑魔法?

here's an image of my vsCode freaked out with me...



几天后回答我自己的问题: (感谢@Evert)

以防万一其他人将来有同样的问题,React 源代码是用 Flow 编写的。文件扩展名仍然是

.js
,并且这些文件中有类型。如果未安装 Flow,vsCode 无法理解它是什么,只会报告一堆错误...

javascript reactjs typescript flowtype
1个回答
2
投票

您可以将类型粘贴到 JavaScript 代码中,这称为“TypeScript 类型声明”,扩展名为 .d.ts。当 TypeScript(或者带有智能感知的编辑器)看到一个 javascript 文件和一个同名的 .d.ts 文件时,它将从该文件导入类型定义。

有一个项目旨在为每个 JavaScript 库提供类型定义,也许您听说过谈论DefinitelyTyped

例如:

// example.js
function hello(name) {
  console.log(`Hello ${name}!`);
}


// example.d.ts
function hello(name: string);


// main.ts
import { hello } from 'example';
hello(42); // Error! "name" must be a string

相同的系统已用于在 React 中提供类型

© www.soinside.com 2019 - 2024. All rights reserved.