首页
学习
活动
专区
圈层
工具
发布

【TypeScript 演化史 -- 8】字面量类型扩展 和 无类型导入

如果 TypeScript 为 let 变量推断一个字面量类型,那么尝试为指定的值以外的任何值赋值都会在编译时产生错误。...无类型导入 从TypeScript 2.1 开始处理无类型化导入更加容易。...以前,编译器过于严格,当导入一个没有附带类型定义的模块时,会出现一个错误: 从 TypeScript 2.1 开始,如果模块没有类型声明,编译器将不再报错。...现在,导入的 range 函数的类型为 any。这样做的好处是,将现有的 JS 项目迁移到 TypeScrip t可以减少编译时错误。...(否则,将无法为导入的模块提供类型) 对于没有声明文件的模块的导入,在使用了--noImplicitAny编译参数后仍将被标记为错误。

1.4K10

TypeScript 类型体操:合并映射类型的处理结果为联合类型

索引类型是 TypeScript 中的常见类型,它是聚合多个元素的类型,对象、类、元组等都是索引类型。...它可以对索引类型的索引和值做一些变换,然后产生新的索引类型。...: TypeScript 也内置了很多基于映射类型实现的工具类型,比如 Partial、Required 等。...总之,会了映射类型就能够对索引类型做各种变换了。 但是,这些都是对索引类型整体做的变换,变换的结果依然是一个索引类型。 有的时候是想把它们分开的。比如这种需求: 希望能把每个索引给分开。...总结 索引类型是 TypeScript 中的常见类型,可以通过映射类型的语法来对它做一些修改,生成新的索引类型。

2.3K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TypeScript 类型体操:提取对象指定 key 并设置为必填

    今天我们来做一道 TypeScript 类型编程题。 我们需要实现一个 RequiredPick 类,从一个对象类型中提取指定的 key 生成新的对象类型,并将它的所有 key 设置为必填。...Pick 我们容易想到 Pick 的实现,Pick 是 TypeScript 内置的一个高级类型。这个类型的实现在我以前的文章《类型体操:探究 TypeScript 内置高级类型》有讲解过。...T 和 K,K 必须为 T 对象的 key 组成的联合类型的子类型。...{ [P in K]: T[P]; } 是对类型进行 重映射,这里的 P in K 表示遍历 K(K 是遍历类型),然后作为重映射类型的新 key,并且将 T[P] 作为值。...然后打个广告,前端大佬神光的 TypeScript 体操教材,如果你想入门的话,这个挺适合,也不贵。

    3.6K10

    【TypeScript 演化史 — 第八章】字面量类型扩展 和 无类型导入

    如果 TypeScript 为 let 变量推断一个字面量类型,那么尝试为指定的值以外的任何值赋值都会在编译时产生错误。...无类型导入 从TypeScript 2.1 开始处理无类型化导入更加容易。...以前,编译器过于严格,当导入一个没有附带类型定义的模块时,会出现一个错误: image.png 从 TypeScript 2.1 开始,如果模块没有类型声明,编译器将不再报错。...image.png 现在,导入的 range 函数的类型为 any。这样做的好处是,将现有的 JS 项目迁移到 TypeScrip t可以减少编译时错误。...(否则,将无法为导入的模块提供类型) 对于没有声明文件的模块的导入,在使用了--noImplicitAny编译参数后仍将被标记为错误。

    5.5K10

    TypeScript 4.0 RC发布,带来诸多更新

    当我们 spread 没有已知长度的类型时,结果类型也将变得不受限制,并且所有连续元素都会分解为结果的 rest 元素类型。...由于这些变量默认情况下的类型为 any,因此它们没有任何类型安全性可以防止无效操作。因此,TypeScript 4.0 现在允许你将 catch 子句变量的类型指定为 unknown。...在像 VSCode 这样的编辑器中,deprecated 的值通常显示为删除线样式。 有关详细信息,查看拉取请求。...但是,自动导入在用 TypeScript 编写的包上不起作用——也就是说,我们得在项目的其他位置至少写了一个显式导入。 为什么自动导入适用于 @types 软件包,而不适用于使用自己类型的包呢?...AST 节点的“工厂”函数。

    3K20

    TypeScript 4.0正式发布!现在是开始使用它的最佳时机

    由于这些变量默认情况下的类型为 any,因此它们没有任何类型安全性可以防止无效操作。因此,TypeScript 4.0 现在允许你将 catch 子句变量的类型指定为 unknown。...在像 VSCode 这样的编辑器中,deprecated 的值通常显示为删除线样式。 ? 有关详细信息,查看拉取请求。...但是,自动导入在用 TypeScript 编写的包上不起作用——也就是说,我们得在项目的其他位置至少写了一个显式导入。 为什么自动导入适用于 @types 软件包,而不适用于使用自己类型的包呢?...这些包中的信息仅用于改进自动导入,不会更改类型检查等其他内容。这样就避免了遍历 node_modules 目录的成本,使我们可以为所有带类型的依赖项提供自动导入。...AST 节点的“工厂”函数。

    2.7K10

    异步请求在TypeScript网络爬虫中的应用

    TypeScript与网络爬虫TypeScript为JavaScript提供了一个可选的静态类型系统,这使得代码更加健壮和易于维护。...在网络爬虫的开发中,TypeScript的类型系统可以帮助开发者更准确地定义数据结构,减少运行时错误,并提高开发效率。...然后,你需要安装request-promise和@types/request-promise这两个npm包,后者为request-promise提供了TypeScript类型定义。...:我们导入了request-promise库,这是一个基于Promise的HTTP请求库,它使得异步请求的编写更加简洁。...结论异步请求是现代网络爬虫不可或缺的一部分,它不仅提高了爬虫的性能,还改善了代码的可维护性。TypeScript的静态类型系统为编写复杂的异步代码提供了额外的安全保障。

    88310

    淘宝店铺 TypeScript 研发规约落地实践|技术详解

    先来看一个常见场景,在为请求结果声明类型时我们可能会这么做,左边的一二两种是,请求方法完全没有类型的情况,这个时候使用类型断言或显式类型标注就行,第三种则是请求方法带了类型,但经过数任维护者改动后类型已经越来越偏了...在工程实践中我们通常使用统一的请求方法,所以如果每个调用请求的地方都能被自动推导出响应的类型,我们就能够在减少许多类型代码量的同时保证更精确的类型。...集中管理请求方法的示例 这张图是一个简单的,适用于集中管理的请求方法的例子,通过枚举和泛型的帮助将请求的路径直接和最后的请求结果关联起来,而不再需要更多额外的类型标注了,同时在更严格的场景下,我们实际上还可以将入参的类型校验也关联到...所以 TS 提供了 isolateModule 这个配置项,它会在你使用了除 TypeScript 以外的构建工具无法编译的语法时给出警告,常见的这一类语法有重新导出从别处导入的类型,因为对于类型的导入实际上是走的和值导入不同的空间...我们看上面的图中,检查一个导入是否存在,为已存在的 Class 新增一个 Entity 装饰器。更进一步,还可以检查一个导入是不是要求的类型,比如命名空间导入,仅类型导入,混合导入等等。

    1.4K20

    《现代Typescript高级教程》扩展类型定义

    现代JavaScript高级小册 深入浅出Dart 现代TypeScript高级小册 扩展类型定义 在 TypeScript 中,我们可以通过声明文件(.d.ts 文件)来为现有的 JavaScript...在 TypeScript 中,声明文件是一种以 .d.ts 为扩展名的特殊文件,它不包含具体的实现,只包含类型声明。...这些文件通常用来为已有的 JavaScript 库提供类型定义,使得我们可以在 TypeScript 代码中更安全、更方便地使用这些库。...我们可以通过创建一个声明文件来为该库添加类型声明,以便在 TypeScript 代码中使用该库的时候获得类型检查和自动完成的支持。...现在,在我们的 TypeScript 代码中,我们可以通过导入 axios 模块来使用这些类型声明,以及使用 axios 库的方法: import axios, { AxiosResponse, AxiosRequestConfig

    1.1K10

    TypeScript 4.3 beta 版本正式发布:新增import语句补全,对模板字符串类型进行改进

    作者 | TypeScript 团队 译者 | 王强 策划 | 田晓旭 今天,我们很高兴为大家带来了 TypeScript 4.3 的 Beta 版本!...我们向大家为这些特性做出的贡献表示敬意。 模板字符串类型的改进 在最近的版本中,TypeScript 引入了一种新的类型构造:模板字符串类型。...),它将尝试为该表达式指定一个模板类型。...: https://github.com/microsoft/TypeScript/pull/43376 以及改进推理和模板类型之间检查的拉取请求: https://github.com/microsoft...string | number | undefined; } import 语句补全 用户在 JavaScript 中使用 import 和 export 语句时,遇到的最大痛苦之一就是顺序——特别是导入被编写为

    1.3K40

    TypeScript 4.2 正式发布:更智能的类型别名保留,声明缺失的帮助函数,还有许多破坏性更新

    type BasicPrimitive = number | string | boolean; TypeScript 在打印类型时,总是使用一套规则并猜测何时重用类型别名。以下面这段代码为例。...这有助于让新手更容易上手 TypeScript。 有关更多信息,请查看第一个拉取请求,它改进了有关保留组合类型别名的各种用例,以及第二个拉取请求,它保留了间接别名。...JavaScript 中的类型参数不被解析为类型参数 JavaScript 中已经不允许使用类型参数,但是在 TypeScript 4.2 中,解析器将以更符合规范的形式解析它们。...你可以查看这个拉取请求来获取更多细节: https://github.com/microsoft/TypeScript/pull/42448 .d.ts扩展不能用于导入路径 在 TypeScript...当赋值给可变变量时,这些类型将被放宽为string。

    3.7K20

    TypeScript 5.3

    导入属性 TypeScript 5.3支持导入属性提案的最新更新。 导入属性的一个用例是向运行库提供有关模块预期格式的信息。...我们 我们 稳定支持 resolution-mode 导入类型 在TypeScript 4.7中,TypeScript在resolution-mode中添加了对/// 导入 以前,当TypeScript为类型位置中的内容生成自动导入时,它会根据您的设置添加type修饰符。...这可以使这些工具获得与我们为TypeScript编译器带来的相同的内存和速度改进。 注释解析策略的新选项在JSDocParsingMode中描述。 有关此拉取请求的更多信息。...突破性变化和正确性改进 lib.d.ts 变化 为DOM生成的类型可能会对您的代码库产生影响。 有关更多信息,请参阅TypeScript 5.3的DOM更新。

    57810

    【分享】每个 Web 开发者在 2021 年必须拥有 15 个 VSCode 扩展

    itemName=rbbit.typescript-hero TypeScript 是 JavaScript 的一个超集,具有可选的类型,并可编译为纯 JavaScript。...当我们使用 TypeScript 时,这个扩展就派上用场了。它通过一个名为 “灯泡” 的功能对你的导入文件进行分类和组织,并修复编码错误。 4....它没有键入全部代码,而是为最常见的 JavaScript 函数预定义了许多代码片段。它支持 TypeScript、React、Vue 和 HTML。如果你在 React 上工作,有一个类似的扩展。...它允许您为不同类型的注释提供不同的颜色代码,这些注释可以是 TODOs、高亮显示、警报和其他类型的注释。 这是强烈推荐的,用于编写干净和文档化的代码。 14....这个扩展允许你做一个 HTTP 请求,并在 VSCode 中直接查看响应,而不是在两个应用程序之间切换,这个扩展为你做这个工作。

    1.8K10

    Vue 2.5中将迎来有关TypeScript的优化!

    类型改进 自Vue2.0发布以来,一直有开发者提出请求,希望能更好地集成TypeScript。...从那时起,我们已经为大多数核心库( vue, vue-router, vuex)加入了官方的TypeScript类型声明。然而,当使用开箱即用的Vue API时,目前的集成还是有所欠缺。...新的类型需要至少2.4版的TypeScript。建议你随着Vue2.5升级至最新的TypeScript版本。...新的类型将正式转换至ES风格的导入/导出语法,这样上述配置就不需要了,而且用户在所有情况下都要使用ES风格的导入。...我们尽力减小了升级成本,并使这些类型改进与 vue-class-component中使用的基于类的API兼容。对于绝大多数用户,只需要升级依赖关系,并切换至ES风格的导入就好。

    1.3K20
    领券