返回顶部
首页 > 资讯 > 前端开发 > JavaScript >TypeScript 类型级别示例介绍
  • 576
分享到

TypeScript 类型级别示例介绍

TypeScript 类型级别TypeScript 类型 2023-02-27 11:02:27 576人浏览 安东尼
摘要

介绍 这是一门在线课程,旨在将您的typescript技能从中级提升到高级。它将使你深入了解类型系统的基本原理,并指导你完成其高级功能。在这里,你会找到成为TypeScript专家

介绍

这是一门在线课程,旨在将您的typescript技能从中级提升到高级。它将使你深入了解类型系统的基本原理,并指导你完成其高级功能。在这里,你会找到成为TypeScript专家所需的一切-不仅有深入的内容,还有练习新技能的有趣挑战,就像这里的这个。


type Hello = "...";
// Type-level unit tests!
// If the next line type-checks, you solved this challenge!
type test1 = Expect<Equal<Hello, "World">>;

多年来,TypeScript的类型系统已经从基本的类型注释发展成为一种大型复杂的编程语言。如果你曾经研究过一个开源库的代码,你可能会发现一些看起来很吓人、很陌生的类型,比如来自另一个星球的一些深奥的语言。库代码通常需要比我们习惯编写的代码更抽象;

这就是为什么它广泛使用高级TypeScript功能,如泛型、条件类型、映射类型甚至递归类型。我个人在研究TS Pattern时学习了这些概念,这是一个开源库,具有极其难以键入的特殊性。在本课程中,我希望分享我通过阅读过多的源代码和对类型系统进行数百小时的修改所学到的知识。

类型之所以很棒,有很多原因:

  • 类型可以作为代码的文档,以便查询。
  • 类型可以向开发人员提供代码提示。
  • 类型能发现错误和拼写错误。

类型系统对您的代码了解得越多,它对你的帮助就越大!一旦你精通TypeScript,一切都变得可能。您将不再觉得类型系统限制了您编写所需抽象的能力。

想不想检查路由参数传递的是否正确?

走你:

// ✅ this is correct ?
navigate("user/:userId", { userId: "2" });
// ✅ Looks Good! `dashboardId` is optional.
navigate("user/:userId/dashboard(/:dashboardId)", { userId: "2" });
// ❌ `userId` is missing. Add one to fix the error!
navigate("user/:userId/dashboard(/:dashboardId)", { dashboardId: "2" });
// ❌ `oops` isn't a parameter. Remove it to fix the error!
navigate("user/:userId/dashboard(/:dashboardId)", { userId: "2", oops: ":(" });
// ? Scroll to see how this works!
// ? Here are the kind of things you will soon be able to do!
type ParseUrlParams<Url> =
  Url extends `${infer Path}(${infer OptionalPath})`
    ? ParseUrlParams<Path> & Partial<ParseUrlParams<OptionalPath>>
    : Url extends `${infer Start}/${infer Rest}`
    ? ParseUrlParams<Start> & ParseUrlParams<Rest>
    : Url extends `:${infer Param}`
    ? { [K in Param]: string }
    : {};
// navigate to a different route
function navigate<T extends string>(
  path: T,
  params: ParseUrlParams<T>
) {
  // interpolate params
  let url = Object.entries<string>(params).reduce<string>(
    (path, [key, value]) => path.replace(`:${key}`, value),
    path
  );
  // clean url
  url = url.replace(/(\(|\)|\/?:[^\/]+)/g, '')
  // update url
  history.pushState({}, '', url);
}

是不是觉得很神奇?它居然能够检查路由参数的传递。其实这并不是魔法。类型系统只是一种真正的编程语言!

为了更好地理解这一点,我们首先需要承认TypeScript的类型系统本身就是一种成熟的编程语言!它非常值得学习它的基础知识,就像我们使用任何其他新编程语言一样。在本课程中,我将尝试展示您已经知道的编程概念之间的对应关系,如代码分支、变量赋值、循环和数据结构,以及它们的类型级别等价物。通过组装这些构建块,您将能够创建强大的类型级算法,以确保在整个代码库中始终正确使用您创建的抽象。

以上就是TypeScript 类型级别示例介绍的详细内容,更多关于TypeScript 类型级别的资料请关注编程网其它相关文章!

--结束END--

本文标题: TypeScript 类型级别示例介绍

本文链接: https://lsjlt.com/news/197646.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • TypeScript 类型级别示例介绍
    介绍 这是一门在线课程,旨在将您的TypeScript技能从中级提升到高级。它将使你深入了解类型系统的基本原理,并指导你完成其高级功能。在这里,你会找到成为TypeScript专家...
    99+
    2023-02-27
    TypeScript 类型级别 TypeScript 类型
  • TypeScript类型级别和值级别示例详解
    目录对值级别编程类型级别编程区分类型级编程挑战是如何工作的挑战对值级别编程类型级别编程区分 首先,让我们对值级别编程和类型级别编程进行重要区分。 值级别编程让我们编写将在生产中运行...
    99+
    2023-02-27
    TypeScript类型级别值级别 TypeScript 级别
  • TypeScript基础类型介绍
    目录1.基础类型 2.对象类型 2.1数组 2.2元组 2.3对象 3.类型推断 3.1类型联合中的类型推断 3.2上下文类型 4.类型断言 TS 的静态类型可以人为的分为两类: 基...
    99+
    2024-04-02
  • TypeScript类型级别实例代码分析
    本篇内容介绍了“TypeScript类型级别实例代码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!代码如下:type Hell...
    99+
    2023-07-05
  • TypeScript内置高级类型编程示例
    目录TypeScript 类型编程TypeScript 内置高级类型Pick<Type, Keys>Exclude<UnionType, Excluded...
    99+
    2024-04-02
  • TypeScript类型级别和值级别如何区分
    这篇文章主要介绍“TypeScript类型级别和值级别如何区分”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“TypeScript类型级别和值级别如何区分”文章能帮助大家解决问题。对值级别编程类型级别...
    99+
    2023-07-05
  • TypeScript类型使用示例剖析
    目录JavaScript的内置类型 VS TypeScript内置类型元祖接口interfaceinterface和type有什么区别?枚举怎么让Babel支持const enum字...
    99+
    2023-05-18
    TypeScript类型剖析 TypeScript 类型示例
  • TypeScript高级数据类型实例详解
    目录TypeScript 介绍函数枚举联合类型类型别名和接口类型别名接口交叉类型类TypeScript 介绍 TypeScript 是 JavaScript 的超集,提供了 Jav...
    99+
    2023-01-30
    TypeScript 高级数据类型 TypeScript 数据类型
  • TypeScript类型断言VS类型守卫示例详解
    目录类型断言类型守卫使用 in 关键字使用 instanceof 关键字使用 typeof 关键字自定义类型守卫总结类型断言 类型断言有两种写法,分别为value as Type和&...
    99+
    2022-11-16
    TypeScript类型断言类型守卫 TypeScript 类型
  • Java变量类型实例介绍
    这篇文章主要介绍“Java变量类型实例介绍”,在日常操作中,相信很多人在Java变量类型实例介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java变量类型实例介绍”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-02
  • java浮点类型案例介绍
      java浮点类型介绍在学习java开发中,那么java浮点类型是我们必不可少学习的知识点,下面介绍一下java浮点类型。1. float型常量:453.5439f,21379.987F,231.0f(小数表示法),2...
    99+
    2023-06-03
  • TypeScript泛型使用详细介绍
    目录1 什么是泛型2 泛型方法3 泛型类4 泛型接口1 什么是泛型 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别...
    99+
    2022-11-13
    TypeScript泛型 TypeScript泛型使用方法
  • js中值类型和引用类型的区别介绍
    1.JavaScript中的变量类型有哪些? (1)值类型(基本类型):字符串(string)、数值(number)、布尔值(boolean)、undefined、null ...
    99+
    2024-04-02
  • Typescript中数据类型的示例分析
    这篇文章将为大家详细讲解有关Typescript中数据类型的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。是什么typescript和javascript几乎一样,拥有相同的数据类型,另外在jav...
    99+
    2023-06-29
  • TypeScript中的递归类型示例解析
    目录正文什么是递归类型?示例1:树形结构示例2:链表总结正文 在这篇博客中,我们将深入探讨TypeScript中的递归类型。递归类型是一种非常强大的功能,它允许我们对具有自相似结构...
    99+
    2023-05-14
    TypeScript递归类型 TypeScript 类型
  • Typescript中函数类型及示例详解
    目录常见写法 可选参数 默认参数 剩余参数数组类型的剩余参数 元组类型的剩余参数解构参数重载函数 构造函数类型字面量不给参数定义类型...
    99+
    2023-01-05
    Typescript中函数类型 Typescript函数类型 Typescript数据类型
  • TypeScript泛型的使用详细介绍
    目录情景再现使用泛型泛型类型泛型接口泛型类泛型约束在泛型里使用类类型[]高级案例情景再现 这里针对一种情况,也是非常常见的一种情况:那就是 function identity(arg...
    99+
    2024-04-02
  • TypeScript中let和var的区别介绍
    目录1、作用域不同2、let没有变量提升3、let变量不能重复声明4、for循环中的let与var1、作用域不同 用var声明的变量,只有函数作用域和全局作用域,没有块级作用域。而l...
    99+
    2024-04-02
  • TypeScript高级类型有哪些
    本篇内容介绍了“TypeScript高级类型有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Inter...
    99+
    2024-04-02
  • TypeScript中的交叉类型和联合类型示例讲解
    目录交叉类型(Intersection types)要点联合类型(Union types)类型缩减 交叉类型(Intersection types) 什么事交叉类型呢?简单...
    99+
    2022-12-31
    TypeScript交叉类型与联合类型 TypeScript交叉类型 TypeScript联合类型
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作