在 TypeScript 中定义返回函数的函数类型时出现“找不到参数”

Posted

技术标签:

【中文标题】在 TypeScript 中定义返回函数的函数类型时出现“找不到参数”【英文标题】:"Cannot find param" on defining function type returning a function in TypeScript 【发布时间】:2019-03-08 11:52:41 【问题描述】:

我无法在 TypeScript 中定义返回另一个函数的函数类型。

这行得通:

type HandleDoc = (doc: any) => any
type SyncHookDoc = (updateStore, doc: any, store) => (void | HandleDoc)

但是如果我尝试 1 行它不起作用:

type SyncHookDoc = (updateStore, doc: any, store) => (void | (doc: any) => any)

错误:

找不到名称“doc”。

'any' 仅指一种类型,但在这里用作值。

【问题讨论】:

【参考方案1】:

您需要在函数签名周围额外添加一组()

type SyncHookDoc = (updateStore, doc: any, store) => (void | ((doc: any) => any))

【讨论】:

为什么会这样? 我的猜测是| 对 => 有更高的优先级。因此编译器会将类型视为 ` (void | (doc: any)) => any)`

以上是关于在 TypeScript 中定义返回函数的函数类型时出现“找不到参数”的主要内容,如果未能解决你的问题,请参考以下文章

Typescript构造函数和继承

TypeScript函数(方法)

两个具有静态返回类型的 TypeScript 函数。语法不同,但它们似乎做同样的事情?

返回函数的通用 TypeScript 类型,将 ReturnType 替换为返回函数的 ReturnType

typeScript入门函数与类

函数缺少返回类型 - 在反应(打字稿)代码中