TypeScript中() => void与() => {}的类型差异是什么
TypeScript 函数返回类型
{}与void的差异说明 核心差异
type type2 = () => void定义的是返回值无使用意义的函数类型:该类型不限制函数是否返回值,就算函数主动返回其他类型的值,类型系统也会直接忽略返回值的类型校验,是专门用来标记不需要关注返回结果的函数场景。type type1 = () => {}定义的是必须返回空对象类型值的函数类型:该类型严格要求函数返回的值必须符合空对象{}的类型约束,不允许返回undefined、null或其他任意不符合的类型。
报错原因
你声明的赋值函数() => { }没有编写return语句,TypeScript会默认推断该函数的返回值类型为void,而void类型无法满足type1要求的返回{}类型的约束,因此会抛出Type 'void' is not assignable to type '{}'的错误。
修正方案
如果需要符合type1的类型要求,只需要主动在函数内返回空对象即可:
// 写法1:完整return写法 const firstType: type1 = () => { return {} } // 写法2:箭头函数简写(需要加括号避免被识别为函数体包裹符号) const firstType: type1 = () => ({})
内容的提问来源于stack exchange,提问作者Woohaik
相关产品推荐
相关产品推荐

