首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是value is (...args: any[]) => any

什么是value is (...args: any[]) => any
EN

Stack Overflow用户
提问于 2021-04-22 02:47:28
回答 1查看 63关注 0票数 0
代码语言:javascript
复制
export function isFunction(value: any): value is (...args: any[]) => any {
  return typeof value === 'function';
}

为什么使用value is (...args: any[]) => any而不是boolean

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-22 02:49:48

这被称为Type Guard,它为typescript提供了比运行时布尔检查更多的类型信息。https://medium.com/swlh/typescript-generics-and-type-guards-explained-by-example-177b4a654ef6

代码语言:javascript
复制
export function isFunctionTypeGuard(value: any): value is (...args: any[]) => any {
  return typeof value === 'function';
}

export function isFunctionBool(value: any): boolean {
  return typeof value === 'function';
}

const doSomething = (fn: any) => {
    // using a runtime type check
    if (isFunctionBool(fn)) {
        fn(1, 2, 3);
    //  ^^ typescript still thinks the type is `any`
    }

    // using a typeguard
    if (isFunctionTypeGuard(fn)) {
        fn(1, 2, 3);
    //  ^^ typescript now knows the type is `(...args: any[]) => any` 
    }    
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67201797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档