TypeScript NonNullable 类型如何工作
NonNullable
类型是 TypeScript 中的一种实用类型,它创建一个新类型,同时删除所有 null 或未定义的元素。 它允许我们采用现有的类型,并修改它们,使它们更适合某些情况。 让我们看看它是如何工作的。
自定义类型
Javascript 是一种弱类型语言,这意味着我们通常不会考虑类型。 Typescript 是强类型的,这意味着一切都有类型。
有时我们想让一个对象或函数的返回符合某种格式。 这是我们使用自定义类型的地方。 Typescript 允许我们定义自己的自定义类型,然后我们可以在代码中使用它们。
Alias 类型
如何创建类型的一个示例称为别名类型。 我们定义类型的示例如下所示:
type Company = {
name: string,
address: string,
value?: number
}
如果我们给某个东西提供类型 Company,那么我们希望它至少有一个名称和地址,以及一个可选值,这不是必须给出的。 如我们所见,在我们的类型中有一个问号表示该属性是可选的。
如果我们要在代码中使用它,我们可能会这样做:
let myFunction = async function(): Promise<Company> {
let getApi = await fetch('/myApi/data', {
method: 'GET'
})
let getResult:Company = await getApi.json();
return getResult;
}
在上面的代码中,我们返回了一个 Company 类型的 Promise,如果我们没有得到它,我们会得到一个错误。 因此,例如,如果我们尝试运行它并且我们没有从我们的 API 中获取地址或名称,我们将遇到一个我们可以处理的错误。
扩展 Alias 类型
我们可以扩展 Alias 类型,即 如果你想给它添加一个新元素。 例如:
type Company = {
name: string,
address: string,
value?: number
}
type SubCompany = Company & {
identity: string
}
在上面,SubCompany
将拥有 Company
拥有的所有内容,以及一个称为身份的必需属性。
改为使用接口
到目前为止,我们所说的一切都是使用 type
关键字,但我们可以使用 interface
关键字来做同样的事情。 我们使用哪一个确实是个人喜好。 我们上面的例子看起来像这样的接口:
interface Company {
name: string,
address: string,
value?: number
}
interface SubCompany extends interface {
identity: string
}
Union 类型
我们还可以使用更简单的语法定义自定义类型,称为联合类型。 假设我们有一个类型可以是字符串或数字,称为 myType。 我们可以定义该类型,如下所示:
type myType = number | string
Literal 类型
这是我们设置类型的地方,该类型具有可以从中选择的特定值列表。 假设我们的原始类型 Company 只能具有红色、蓝色或绿色三个值。 我们可以定义一个文字类型,并将其用作我们的 name
属性的类型:
type Option = "blue" | "green" | "red"
type Company = {
name: Option,
address: string,
value?: number
}
NonNullable 实用程序类型
NonNullable
实用程序类型与其他实用程序类型的工作方式很相似,因为它可以采用现有类型,并根据需要对其进行修改。 例如,假设我们有一个特定的联合类型,它接受 null 和 undefined 作为潜在选项:
type myType = string | number | null | undefined
这个例子在一个例子中效果很好,但是我们的代码的另一部分我们不想接受 null
或 undefined
。 我们可以为此创建一个新类型,或者我们可以重用 myType,使用 NonNullable
:
type myType = string | number | null | undefined
type noNulls = NonNullable<myType>
在上面的例子中,noNulls
现在是 string | number
类型。
相关文章
在 TypeScript 中使用 try..catch..finally 处理异常
发布时间:2023/03/19 浏览次数:181 分类:TypeScript
-
本文详细介绍了如何在 TypeScript 中使用 try..catch..finally 进行异常处理,并附有示例。
在 TypeScript 中使用 declare 关键字
发布时间:2023/03/19 浏览次数:97 分类:TypeScript
-
本教程指南通过特定的实现和编码示例深入了解了 TypeScript 中 declare 关键字的用途。
在 TypeScript 中 get 和 set
发布时间:2023/03/19 浏览次数:172 分类:TypeScript
-
本篇文章演示了类的 get 和 set 属性以及如何在 TypeScript 中实现它。
在 TypeScript 中格式化日期和时间
发布时间:2023/03/19 浏览次数:161 分类:TypeScript
-
本教程介绍内置对象 Date() 并讨论在 Typescript 中获取、设置和格式化日期和时间的各种方法。
在 TypeScript 中返回一个 Promise
发布时间:2023/03/19 浏览次数:182 分类:TypeScript
-
本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。
在 TypeScript 中定义函数回调的类型
发布时间:2023/03/19 浏览次数:221 分类:TypeScript
-
本教程说明了在 TypeScript 中为函数回调定义类型的解决方案。为了程序员的方便和方便,实施了不同的编码实践指南。
在 TypeScript 中把 JSON 对象转换为一个类
发布时间:2023/03/19 浏览次数:110 分类:TypeScript
-
本教程演示了如何将 JSON 对象转换为 TypeScript 中的类。
使用 NPM 将 TypeScript 更新到最新版本
发布时间:2023/03/19 浏览次数:130 分类:TypeScript
-
本教程说明了如何使用 npm 更新到最新版本的 TypeScript。这将为如何使用 npm 将 TypeScript 更新到最新版本提供完整的实际示例。
使用 jQuery 和 TypeScript
发布时间:2023/03/19 浏览次数:151 分类:TypeScript
-
本教程提供了使用 jQuery 和 TypeScript 的基本理解和概念。