Code Flow

JavaScript 文件中的代码流会影响整个程序的类型。

const users = [{ name: "Ahmed" }, { name: "Gemma" }, { name: "Jon" }];

// 我们尝试找到名为 “jon” 的用户。
const jon = users.find((u) => u.name === "jon");

// 在上面的情况中,“find” 可能失败,在这种情况下我们不能得到一个对象, 它会创建如下类型: { name: string } | undefined 如果您将鼠标悬停在下面的三个用到 ‘jon’ 的地方,您会看到类型的 变化依赖于文本在哪里:
if (jon) {
  jon;
} else {
  jon;
}

// 类型 ‘{ name: string } | undefined’ 使用了叫做 并集类型的 TypeScript 的功能,并集类型是声明对象可能是 几种东西之一的方式。 管道符号充当不同类型间的分隔符,JavaScript 的动态特性意味着许多 函数会收到和返回不同类型的对象,因此我们需要能够表达需要处理的对象。 我们可以通过几种方式来使用它。让我们看一下具有不同类型的值的数组。
const identifiers = ["Hello", "World", 24, 19];

// 我们可以使用 ‘typeof x === y’ 的 JavaScript 语法来检查第一个 元素的类型。您可以将鼠标悬停在下面的 ‘randomIdentifier’ 上以 查看它在不同的位置之间的变化。
const randomIdentifier = identifiers[0];
if (typeof randomIdentifier === "number") {
  randomIdentifier;
} else {
  randomIdentifier;
}

// 控制流分析代表着我们可以编写原始 JavaScript,而 TypeScript 将尝试 去了解代码类型在不同位置如何变化。 去了解更多关于代码流分析的信息: - example:type-guards 要继续阅读示例,您可以跳转到以下不同的位置: - 现代 JavaScript: example:immutability - 类型守卫: example:type-guards - JavaScript 函数式编程 example:function-chaining