0Pricing
TypeScript Academy · 课时

this 参数类型;void 与 never

为特殊的 this 参数指定类型,理解箭头函数中的词法 this,并学习何时返回 void 而不是 never。

this 参数类型;void 与 never 是 CoddyKit 上的免费 TypeScript Academy 课时。 这是第 2 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 TypeScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 TypeScript Academy 课程共包含 3 节课。

简介

目标:为特殊的接收者参数指定类型,了解箭头函数如何在词法作用域中捕获接收者,并在无返回值(不返回值)与永不返回(不产生返回)之间进行选择。

接收者参数类型

请添加一个名为接收者的前置参数,为预期的接收对象指定类型。它不是真实参数,并且只适用于非箭头函数。

function setTitle(this: { title: string }, t: string): void {
  this.title = t;
}

const model = { title: "Old" };
setTitle.call(model, "New");
console.log(model.title);

箭头函数与词法接收者

箭头函数会从周围的作用域捕获接收者;它们不能声明接收者参数。

const counter = {
  n: 0,
  tick: function () {
    setTimeout(() => {
      // Arrow keeps outer this (counter)
      this.n++;
      console.log(this.n);
    }, 0);
  },
};

counter.tick();

无返回值

无返回值表示函数不会返回有意义的值。调用方不应使用其结果。

function logMsg(msg: string): void {
  console.log(msg);
}

const r = logMsg("hello"); // r is void (ignored)
// Returning a value here would error when annotated as void

永不返回

永不返回表示函数不会返回(会抛出异常或进入无限循环)。它适用于穷尽性检查和不可能执行的代码路径。

function fail(message: string): never {
  throw new Error(message);
}

function loopForever(): never {
  while (true) {}
}

// Calling either function never returns

最佳实践

提示:

  • 请仅在依赖接收对象的非箭头函数上使用接收者参数。
  • 请优先使用箭头回调,以避免丢失接收者。
  • 请为具有副作用的函数标注无返回值;对于抛出异常、循环或穷尽性保护,请使用永不返回。

接收者参数检查

快速检查:关于“接收者”参数,哪项说法是 TRUE?

回顾

回顾:请在非箭头函数中使用接收者参数为接收对象指定类型,依靠箭头函数实现词法捕获,并恰当地使用无返回值与永不返回。

常见问题解答

「this 参数类型;void 与 never」课时是免费的吗?

是的 — 「this 参数类型;void 与 never」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 3 节课。

「this 参数类型;void 与 never」这节课中我会学到什么?

为特殊的 this 参数指定类型,理解箭头函数中的词法 this,并学习何时返回 void 而不是 never。 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 TypeScript Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 TypeScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 3 节。

「this 参数类型;void 与 never」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 TypeScript Academy 课中编写并运行代码吗?

能。每节 TypeScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 函数重载与调用签名
  2. this 参数类型;void 与 never
  3. 断言函数与用户自定义类型守卫
← 返回 TypeScript Academy