![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
TypeScript
文章平均质量分 64
天猫精灵998
这个作者很懒,什么都没留下…
展开
-
如何使用 Map 实现 Set
关于 Map 和 Set 是两个抽象数据结构,Map 存储一个键值对集合,其中键不重复,Set 存储一个不重复的元素集合。本质上 Set 可以视为一种特殊的 Map,Set 其实就是 Map 中的键。这里我们用 TypeScript 使用 Map 来实现 Set。核心的思路非常简单,创建一个 Map,我们只要用 Map 的键就行,键对应的值全部填充 undefined:class NewSet<T extends unknown> { private collection: Map<原创 2022-01-23 12:38:24 · 980 阅读 · 0 评论 -
TS 实现简易的 tapable
type TapEvent = string;type Handler = () => void;type EventCenter = Record<TapEvent, Handler>;interface IHook { tap: (name: TapEvent, func: Handler) => void; call: (name?: TapEvent) => void;}class SyncHook implements IHook { pri原创 2021-11-04 20:28:56 · 177 阅读 · 0 评论 -
TypeScript 使用 infer 实现类型推断
首先从一个问题引入,我们怎样拿到下面 Promise 内部包裹的类型呢?function request(req: string): Promise<string> { return new Promise(resolve => setTimeout(() => resolve(req), 3000))}很多同学上来就用 typeof 和 ReturnType 一把梭哈:type Request = typeof request; // type Request =原创 2021-08-16 11:29:40 · 1126 阅读 · 0 评论 -
TS如何获取第三方库未导出的 Type
在使用 antd 组件的时候,同事遇到一个问题,Radio 组件的 onChange 事件处理函数,传递的参数是一个事件对象,无法推导类型:import { Radio } from "antd";import * as React from "react";type Props = { name: string;}const HelloWorld: React.FC<Props> = ({ name }) => { const [value, setValue]原创 2021-08-12 23:28:36 · 1658 阅读 · 0 评论 -
TypeScript 中几个小技巧
泛型的用法本来以为在开发中基本用不到泛型,没想到今天还是碰到了。公司的项目是用 React 写的,其中需要使用 useSelector 的 hook 从 redux 获取数据,代码如下:const { auditFilterOptions, auditRecords, auditTableLoading } = useSelector(state => { auditFilterOptions: state.getIn(["resource", "auditFilterOptions"]),原创 2021-07-21 17:56:13 · 419 阅读 · 0 评论 -
如何编写 TypeScript 声明文件
1. 什么是 TS 声明文件在 TypeScript 中以 .d.ts 为后缀的文件,称为 TypeScript 声明文件。它的作用是描述 JavaScript 模块内所有导出接口的类型信息。2. 什么时候需要写 TS 声明文件在使用 TypeScript 开发的项目中,常常需要引入公共模块,或者第三方库。如果这些公共模块或第三方库是用 JS 写的,那么 TS 就无法检测到类型信息,在编译阶段会报错。这时候有人会说,能不能将这些公共模块或第三方库的代码用 TS 重写呢?答案是不行,因为重写之后,使用原创 2021-07-18 16:23:07 · 2184 阅读 · 1 评论 -
TypeScript 快速入门
考虑到现在项目中主要使用 JS ,以及 TS 的学习成本,采用渐进式迁移的方案,允许使用 JS 或 TS 编写组件代码,对使用 TS 编写的组件进行编译。如果是自己搭建的项目,可以参考以下方案:Webpack 转译 Typescript 现有方案有了 @babel/preset-typescript ,配置 TypeScript 环境确实方便了很多。需要注意的是,@babel/preset-typescript 只做语法转换,不做类型检查,因为类型检查的任务可以交给 IDE (或者用 tsc)去做。原创 2021-07-13 22:29:17 · 170 阅读 · 0 评论