视频位置 TypeScript快速梳理_中篇 视频位置 00:49:00
需要先把 7.4 void 学会,才能学这里。
先来观察如下两段代码
代码段1(正常)
在函数定义时,限制函数返回值为 void ,那么函数的返回值就必须是空。
//void 只能接收一种空,就是 undefined
function demo():void{
// 返回undefined合法
//如果不写,那么默认返回的也是 undefined
return undefined
// 以下返回均不合法
return 100
return false
return null
return []
}
//调用:
demo()代码段2(特殊)
使⽤ 类型声明 限制函数返回值为 void 时, TypeScript 并不会严格要求函数返回空。
//自定义一个类型,这个类型叫 LogFunc
//() => void //表示一个函数,该函数不接收任何参数,该函数的返回值是void。
type LogFunc = () => void
//f1 是变量, 类型为 LogFunc
const f1: LogFunc = () => {
return 999; // 允许返回 ⾮空值
};
const f2: LogFunc = () => 200; // 允许返回 ⾮空值
const f3: LogFunc = function () {
return 300; // 允许返回 ⾮空值
};为什么会这样?
官网说: 是为了确保如下代码成⽴,我们知道 Array.prototype.push 的返回值是⼀个数字,⽽ Array.prototype.forEach ⽅法期望其回调的返回类型是 void 。
const src = [1, 2, 3];
const dst = [0];
//如果箭头函数只有一句,那么此时返回值就是这句的执行结果。此处.push()返回的是当前数组的长度。
src.forEach( (el) => dst.push(el) );官⽅⽂档的说明:Assignability of Functions
