在TypeScript中,建议明确描述回调函数的类型。明确参数和返回值的类型有助于防止错误:
type Callback = (event: string, id: number) => boolean; function useCallback(cb: Callback) { // ... }
void(不返回任何值),这应该被指明:() => void。在定义回调函数时,如果TypeScript可以自动推导它们,是否一定要指定参数和返回值的类型?
回答: 不一定,TypeScript可以推导回调参数的类型,但是对于公共API和复杂的组合函数,明确指定所有类型是非常可取的。这有助于维护并防止在更改函数合同时出现不必要的错误。
故事
在项目中使用了未显式类型化返回值的回调,一个开发者开始从函数中返回字符串,而不是预期的布尔值。这在编译阶段由于默认的any没有引发错误,但函数的逻辑被破坏,导致在生产环境中出现了bug。
故事
在一个大型React项目中,忘记显式类型化事件回调的参数。切换到新版本的React后,事件的类型发生了变化,代码开始出现编译错误。不得不紧急修复所有页面的回调函数。
故事
在Node.js应用程序中,与异步函数一起使用的回调没有进行类型化:获取的值错误地被识别为字符串,而实际上是错误对象。类型不匹配导致无法正确处理错误。