玩转TypeScript工具类型(下)

加粗样式在这里插入图片描述
联系我们有道技术团队助手:ydtech01 / 邮箱[email protected]

本文是《玩转TypeScript工具类型》系列的最后一篇,包含了如下几部分内容:

  • ThisParameterType
  • OmitThisParameter
  • ThisType

快捷跳转

一. ThisParameterType

提取一个函数类型显式定义的 this 参数,如果没有显式定义的 this 参数,则返回 unknown 。 这里有如下几个需要注意的点:

  • this参数只能叫 this,且必须在参数列表的第一个位置
  • this 必须是显式定义的
  • 这个 this 参数在函数实际被调用的时候不存在,不需要显式作为参数传入,而是通过 call、apply或者是 bind 等方法指定

1.1 源码解析

type ThisParameterType<T> = T extends (this: infer U, ...args: any[]) => any ? U : unknown;

从源码可以看出对于类型参数 T 是要严格匹配 (this: infer U, …args: any[]) => any格式的,所以对于 this 参数的名称和位置都是固定的。剩下的逻辑就是对 this 参数的类型定义一个类型参数 U ,在 extends 判断走 true 分支时返回 this 类型参数 U ,false 分支就返回 unknown。

1.2 实战用法

显式的定义 this 类型有助于我们在函数内部安全的使用 this 。

function toHex(this: Number) {
  return this.toString(16);
}
 
function numberToStrin

猜你喜欢

转载自blog.csdn.net/youdaotech/article/details/120366579