gpt4 book ai didi

typescript - 检查变量是否可调用

转载 作者:行者123 更新时间:2023-12-02 18:26:12 25 4
gpt4 key购买 nike

我想创建一个辅助函数 isCallback 来返回函数是否​​可调用。

我有一个类型可以是 true 或带有特定参数的回调。在我当前的代码中,我有很多检查,例如 typeof foo === 'function',我想用 isCallback 函数重构这些检查。

我创建了这个辅助函数 isCallback:

export const isCallback = (maybeFunction: unknown): boolean =>
typeof maybeFunction === 'function'

我的问题是,当我使用它时,TypeScript 很困惑:

if(isCallback(foo)) {
foo(myArgs) // Error here
}

并提示:

This expression is not callable.
Not all constituents of type 'true | ((result: Result) => void)' are callable.
Type 'true' has no call signatures.

如果变量是可调用的并且 TypeScript 也知道它,我如何创建一个返回 true 的函数?

最佳答案

作为@jonrsharpe指出,使用 type predicates有效。

export const isCallback = (
maybeFunction: true | ((...args: any[]) => void),
): maybeFunction is (...args: any[]) => void =>
typeof maybeFunction === 'function'

关于typescript - 检查变量是否可调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70123445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com