首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

TypeScript 演化史 — 第七章】映射类型和更好的字面量类型推断

TypeScript 2.1 引入了映射类型,这是对类型系统的一个强大的补充。本质上,映射类型允许w咱们通过映射属性类型现有类型创建新类型。根据咱们指定的规则转换现有类型的每个属性。...需要 freezePoint 函数。对于希望在应用程序冻结的每种类型的对象,咱们就必须定义一个包装器函数,该函数接受该类型的对象并返回冻结类型的对象。...Lodash:pick 函数从一个对象中选择一组属性。该方法返回一个新对象,该对象只包含咱们选择的属性。可以使用Pick对该行为进行构建,正如其名称所示。... TypeScript 2.1 开始,字面量类型总是推断为默认值。...readonly 修饰符只限制 TypeScript 代码对属性的访问,在运行时就无能为力。也就是说,它会被编译时删除掉,不会出现在生成的 JS 代码

3.7K40

TypeScript 演化史 -- 7】映射类型和更好的字面量类型推断

TypeScript 2.1 引入了映射类型,这是对类型系统的一个强大的补充。本质上,映射类型允许w咱们通过映射属性类型现有类型创建新类型。根据咱们指定的规则转换现有类型的每个属性。...需要 freezePoint 函数。对于希望在应用程序冻结的每种类型的对象,咱们就必须定义一个包装器函数,该函数接受该类型的对象并返回冻结类型的对象。...Lodash:pick 函数从一个对象中选择一组属性。该方法返回一个新对象,该对象只包含咱们选择的属性。可以使用 Pick 对该行为进行构建,正如其名称所示。... TypeScript 2.1 开始,字面量类型总是推断为默认值。...readonly 修饰符只限制 TypeScript 代码对属性的访问,在运行时就无能为力。也就是说,它会被编译时删除掉,不会出现在生成的 JS 代码

2.8K10

写一个同事见了会打你的 Prettier 插件

Prettier 的原理 前端的编译工具都是源码到源码的转换,所以都是 parse、transform、generate 这三步: parse 是把源码字符串转换成 AST 的对象树,transform...然后引入 lodash,一些工具函数。...具体什么代码是什么 AST 可以在 http://astexplorer.net 可视化查看: 把 AST 节点用 lodash的 clone 函数复制一份,放到数组里。...这一步就用 lodash 的 shuffle 函数就行: const newImports = _.shuffle(importNodes); 第四步,打印成目标代码。...在 js/ts 文件: 在 vue 文件: 都生效了!(因为 prettier 插件有缓存,不生效的话关掉再打开编辑器就好了) 至此,我们这个同事发现了会打你的插件完成了!

94660

将超过5000万行JS代码迁移到TypeScript,我们得到的10大见解

我们使用两个步骤来缓解这一问题: 1、我们的工具链会向 TypeScript 解析器通知指向依赖项的,有意公开的裸指示符路径(例如“lodash/public1”“lodash/public2”)。...我们选择使用 TypeScript 的 declaration 选项原始.ts 文件生成.d.ts 文件。...在大多数情况下,TypeScript 的声明发射很好用。我们发现的一个问题是,有时 TypeScript 会将类型依赖项内联到生成的类型(#37151)。...其中一个示例是:生成的声明包括仅用于内部测试的函数类型。 可扩展性? ? 由于我们的包系统知道所有公共包的入口点,因此我们的工具链可以爬取可达类型的图,以识别出不需要公开的所有类型。...我们编写了一个工具来执行这一操作——它只声明文件消除代码,这样任务最轻松。它不会重写或重定位代码——毕竟它不是打包器。这意味着发布的声明是 TypeScript 生成声明的一个不变子集。

1.6K30
领券