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 反馈 — 无需本地设置。
此课程中的所有课时
- 函数重载与调用签名
- this 参数类型;void 与 never
- 断言函数与用户自定义类型守卫