首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

给定类型"anything except OR function",如何检查它是否是TypeScript中的函数?

在TypeScript中,可以使用typeof操作符和function关键字来检查给定类型是否是函数类型。具体步骤如下:

  1. 使用typeof操作符获取给定类型的类型字符串。
  2. 使用===运算符将类型字符串与"function"进行比较,判断是否为函数类型。

以下是一个示例代码:

代码语言:txt
复制
function isFunction(type: any): boolean {
  return typeof type === "function";
}

// 示例用法
console.log(isFunction("string")); // false
console.log(isFunction(123)); // false
console.log(isFunction(() => {})); // true
console.log(isFunction(class {})); // true

在上述示例中,isFunction函数接受一个参数type,并使用typeof操作符将其类型转换为字符串。然后,将类型字符串与"function"进行比较,如果相等则返回true,否则返回false

请注意,这个方法只能检查给定类型是否是函数类型,而不能检查函数的参数类型、返回值类型等详细信息。如果需要更详细的函数类型检查,可以使用TypeScript的类型保护机制或其他工具库。

相关搜索:TypeScript表示函数的返回类型是`A |B‘,但是通过传递参数,它必须是A,因为检查发生在如何在TypeScript中创建一个检查类型是否为空对象的类型函数?如何检查一个对象是否是Haxe中给定类的后代?这个模板函数是如何工作的?它检查运行时是否可以进行类型转换,而不使用强制转换如何在Scala宏中检查某个类型是否是某个特定的泛型类型?如何检查pg_proc中的函数输入是否有伪类型?如何在TypeScript 2.0中定义检查参数是否为字符串的函数如何检查一个类型是否是从模板函数中的某个可变模板类实例化的?如何检查一个泛型类型是否是Swift中其他泛型类型的子类?如何在java的arraylist中检查一个对象是否是枚举类型?如何编写python函数来检查给定的字符串是否在值中并返回键如何检查在给定的对象列表中,每种不同类型的对象是否具有可比性?如何在scm方案中定义一个函数来测试它的参数是否是宏?如何使用循环来检查Python中的输入是否已经存在于文件中,如果是新的,则追加它?如何创建一个自动php函数,该函数应该检查是否提交了任何类型的数据,如果是,则显示发布的数据当数组是C中的struct类型时,如何检查条目数组的第一个条目是否为空?我如何在Typescript中定义一个类,它接受一个接口,该接口有两个字段用于相同的泛型,并保证它们是相同的类型?我如何编写一个函数来检查一个单词在向量中是否重复了两次或更多,并输出它重复的次数?在C++中
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

什么鸭子🦆类型

.quack() 方法检查是否可以嘎嘎叫,如果嘎嘎叫了,就返回 true ,如果没有这个方法,异常就会被捕获,则返回 false。...' ); } 在上面的函数,我们做了下面几个判断: 检查参数 value 是不是为空 检查参数 value 是否为 object 类型 通过 Reflect.get 方法更安全安全地判断 quack...); } 这里我们在参数 value 类型告诉 TypeScript 解析器,它可能只鸭子也可能只猫,你需要再函数逻辑再做进一步判断。...换句话说,类型保护可以保证一个字符串一个字符串,尽管它值也可以是一个数字。 实际上它就是告诉 TypeScript 编译器给定就是我们给定那个类型。...小技巧 - 通用类型保护 上面的判断可能在我们代码个很常见用法,如果我们需要判断类型有很多,为每个类型都实现一个这样类型保护函数还挺麻烦,所以我们可以稍微做个变形来封装一个更通用类型保护函数

2.2K20

探索类型系统底层 - 自己实现一个 TypeScript(硬核干货)

例如,下面的语法正确: var foo: number = "not a number"; 语义 - Semantics 这是特定于类型系统代码。本质上询问附加到代码给定类型是否正确。...使用预定义算法,引擎将计算给定变量或者函数类型TypeScript 在其 Binding 阶段(两次语义传递第一次)中使用最佳公共类型算法。...它们 TypeScript 语义系统基本构成。 2. 检查 - Checking 现在类型推断已经完成,类型已经分配,引擎可以运行类型检查。他们检查给定代码 semantics。...我们将其限制在三个场景原因,我们可以关注每一个场景具体机制,并希望到最后能够对如何引入更复杂类型检查有一个更好构思。 我们将在编译器中使用函数声明和表达式(调用该函数)。...在我们进一步讨论之前,对于每种类型,我们将使用基本逻辑函数声明:检查参数类型是否有效,然后检查函数每个语句。

1.2K40
  • TypeScript 5.5 ,即将支持自动推断类型守卫!

    .quack() 方法检查是否可以嘎嘎叫,如果嘎嘎叫了,就返回 true ,如果没有这个方法,异常就会被捕获,则返回 false。...} 我们在实际使用时,会使用 isDuck 方法来判断目标是否 Duck 类型,然后会去执行目标上方法,这时就会报错: function main(value: Duck | Cat) { if...),类型谓词一个返回布尔值函数,可以用来做类型保护; 类型保护可执行运行时检查一种表达式,用于确保该类型在一定范围内。...换句话说,类型保护可以保证一个字符串一个字符串,尽管它值也可以是一个数字。 实际上它就是告诉 TypeScript 编译器给定就是我们给定那个类型。...const nums: number[] 毫不夸张说,我认为这是 TypeScript 最几个版本我觉得最有用一个特性,其实算是修复了 TypeScript 类型推断一个长期存在缺陷,可以让捕获函数类型收窄逻辑变得更加简单

    23710

    TypeScript unknown 与 any 有啥区别

    1 一个数字,不能作为函数调用,TypeScript并没有保护代码避免这个错误 那既允许 invokeAnything() 函数接受任何类型参数,又要强制对该参数进行类型检查防止上面这种报错,要怎么做呢...与 any 相反,TypeScript会保护我们不调用可能不是函数东西。 在使用一个 unknown 类型变量之前,你需要进行类型检查。...在这个例子,我们只需要检查callback 是否一个函数类型。...// You can assign anything to `unknown` type 类型检查 typeof callback === 'function',检查 callback 是否函数,如果...(1); // 可以把任何东西分配给`any`类型 如果 callback any, TypeScript 就不会强制 callback() 语句进行任何类型检查

    47321

    TypeScript 初学者入门学习笔记(一)

    TypeScript 特性 类型系统按照类型检查时机分类,可以分为动态类型和静态类型。...1、类型系统 TypeScript 静态类型 动态类型指在运行时才会进行类型检查类型错误往往会导致运行时错误。...: foo.split is not a function 运行时会报错(foo.split 不是一个函数) 静态类型指编译阶段就能确定每个变量类型类型错误往往会导致语法错误。...编译时报错(数字没有 split 方法),无法通过编译 TypeScript 类型 类型系统按照是否允许隐式类型转换分类,可以分为强类型和弱类型。...sum() { let args: IArguments = arguments; } //其中 IArguments TypeScript 定义好了类型实际上就是: interface

    1.8K20

    深入浅出TypeScript | 青训营笔记

    认识TS 什么TS? TS(TypeScript一种由Microsoft开发和维护编程语言,它是JavaScript超集,支持静态类型检查、类、接口、泛型等特性。...例如: let anything: any = 'hello'; anything = 42; anything = true; 以上常用基础数据类型,需要注意,在 TypeScript ,变量声明时可以省略数据类型...,interface 一种用于描述对象类型语法,定义了一个对象应该具有哪些属性和方法。...综上所述,interface TypeScript 描述复杂对象和函数类型重要语法之一,它可以提高代码可读性和灵活性。 3....如何使用 下面一个简单泛型函数示例,它将传入数组反转并返回: function reverse(array: T[]): T[] { return array.reverse(); }

    8110

    TypeScript 演化史 — 第二章】基于控制流类型分析 和 只读属性

    尽管如此,类型检查器在任何给定位置都为 command 变量使用最具体类型 在分配了字符串 “pwd” 之后,command 变量就不可能字符串数组(联合类型惟一其他选项)。...同样由于进行了相同控制流分析,因此以下函数TypeScript 2.0 也可以正确进行了类型检查function composeCommand(command: string | string...只被编译器用来检查非法属性分配。一旦TypeScript代码被编译成JavaScript,所有readonly概念都消失了。您可以随意摆弄这个小示例,看看如何转换只读属性。...只被编译器用来检查非法属性分配。一旦TypeScript代码被编译成JavaScript,所有readonly概念都消失了。您可以随意摆弄这个小示例,看看如何转换只读属性。...总结 基于控制流类型分析 TypeScript 类型系统一个强大补充。类型检查器现在理解了控制流赋值和跳转语义,从而大大减少了对类型保护需要。

    2K10

    超 1.7 万个 JavaScript 文件,Etsy 大型代码库如何完成向 TypeScript 迁移?

    类型从根本上来说,在编程类型通过代码移动数据期望方式:函数可以使用哪些类型输入,变量可以保存哪些类型值。(如果你不熟悉类型概念,TypeScript 手册有一个 很好介绍)。...一次完全迁移可能在逻辑上使改进已有的类型很难,尤其在单体仓库模式。当导入 TypeScript 文件时,出现被禁止类型错误,你是否应该修复此错误?...技术细节 在迁移过程,有很多有趣技术挑战。令人惊讶,采用 TypeScript 最简单之处就是在构建过程添加对支持。...该函数可以将任何旧字符串作为参数接受,但是如果使用这个字符串来创建元素,那么最好能够确保该字符串实际上一个真正 HTML 元素名称。...结果类型存在一个循环依赖关系,帮助我们创建不可变对象内部实用程序。

    65610

    TypeScript 演化史 — 第一章】non-nullable 类型

    在这篇文章,我们将讨论发布于 TypeScript 2.0 non-nullable 类型,这是对类型系统一个重大改进,该特性可对 null 和 undefined 检查。...null 和 undefined 值 在 TypeScript 2.0 之前,类型检查器认为 null 和 undefined 每种类型有效值。...域不仅包括所有的IEEE 754浮点数,而且还包括两个特殊值 null 和 undefined 对象、数组和函数类型也是如此。无法通过类型系统表示某个特定变量不可空。...Object 可能为空 return s.length; } 在访问属性之前,需要使用类型保护来检查给定对象上属性访问是否安全: function getLength(s: string...: () => void) { // Error: 不能调用可能 “undefined” 对象 callback(); } 与在访问属性之前检查对象类似,我们首先需要检查函数是否具有非空值

    2.4K20

    TypeScript】never 和 unknown 优雅之道

    2、TypeScript top type、bottom type 在类型系统设计,有两种特别的类型: Top type:被称为通用父类型,也就是能够包含所有值类型。...可以,不过原因和上面一样,JSON.parse() 函数签名被添加到 TypeScript 系统之前,unknown 类型还没出现,否则返回类型应该是 unknown。...从这里我们也很容易发现,在一个类型系统,bottom type 独一无二唯一地描述了函数无返回情况。...4.2 never 妙用 never 有以下使用场景: Unreachable code 检查:标记不可达代码,获得编译提示。 类型运算:作为类型运算最小因子。...通过深入了解 never 和 unknown 在 TypeScript 类型系统使用和地位,可以学习到不少类型系统设计和集合论知识,在实际开发合理 narrow 类型,组织起可靠安全代码。

    1.2K20

    Etsy TypeScript 迁移之旅

    非常擅长从你已经编写代码推断类型,并且类型语法足够细致,可以正确描述 Javascript 中一些常见小问题。...迁移策略 TypeScript 可以非常自由检查代码库类型。根据 TypeScript 手册 里所说,更严格 TypeScript 配置可以更好地保证程序正确性。...令人惊讶,迁移 TypeScript 最简单部分在我们构建过程添加对支持。...该函数可以接受任何旧字符串作为参数,但如果使用该字符串来创建一个元素,那么最好确保该字符串实际上一个真正 HTML 元素名称。...我们发现迁移已经熟悉文件学习如何使用 TypeScript 好方法。事实上,我们也决定不会使用更复杂自动迁移工具(如 AirBnB 提供那种),部分原因带走了一些学习机会。

    94240

    TypeScript 官方手册翻译计划【二】:普通类型

    即使没有给参数添加类型注解,TypeScript 也会检查你传递参数个数是否正确 返回值类型注解 你也可以给返回值添加类型注解。...当一个函数出现在某个地方,且 TypeScript 可以推断它是如何被调用时候,该函数参数会被自动分配类型。...和推断规则类似,你不需要刻意学习这个过程怎么发生,但明确这个过程确实会发生之后,你自然就清楚什么时候不需要添加类型注解了。稍后我们会看到更多例子,了解到一个值所处上下文如何影响类型。...就和使用可选属性之前先检查是否为 undefined 一样,我们可以使用类型收窄去检查某个值是否可能为 null: function doSomething(x: string | null) {...枚举 枚举 TypeScript 添加到 JavaScript 一项特性。允许描述一个值,该值可以是一组可能命名常量一个。

    2.2K20

    TypeScript 官方手册翻译计划【九】:类型操控-条件类型

    仅从上面的例子来看,条件类型看起来并不是很有用 —— 就算不依靠,我们自己也能知道 Dog extends Animal 是否成立,然后选择对应 number 类型或者 string 类型!..."hello" : 42); ^ // let c: NameLabel | IdLabel 条件类型约束 通常情况下,条件类型检查会给我们提供一些新信息。...在这段代码TypeScript 抛出了一个错误,因为无法确定 T 是否有 message 属性。...,从而提取出数组类型 string[] 元素类型;如果接受不是数组类型,则直接返回给定类型。...>; ^ // type T1 = string | number 可分配条件类型 条件类型作用于泛型上时,如果给定一个联合类型,那么这时候条件类型可分配

    80420

    Node.js 项目 TypeScript 改造指南(二)

    如果有一个值来自动态内容,我们在定义时候并不确定类型时,any 可能唯一选择,官方文档[2]也是如此解释。因此我们可以看到 any 在基础库、第三方库普遍存在。...了解基础库、第三方库类型 写代码时,应注意基础库、第三方库函数输入输出是否使用了 any,类型、接口是否直接、间接使用了 any。...// 定义一个类型 interface ApiCreateParams { name:string info:string } // 确认data上是否有names字段 function...:number } 收窄类型 TypeScript 没有提供类型转换能力,我们如何从 any、unknown、复杂联合类型获取具体类型就成为一个问题。...我们就可以用 kind 来收窄类型。 条件类型允许我们为类型建立包含关系,也是收窄一种方式。 总结 TypeScript 个强大并且灵活工具,而且特性还在逐步完善。

    3.6K10

    Flow 与 Typescript:哪个更适合你项目?

    类型化”一词表示 TypeScript 要求程序员声明给定变量数据类型。...调用该函数时,TypeScript检查提供对象类型是否正确,如果类型不正确,就会像在调用第二个函数时候代码将无法编译并抛出错误。...} square("2"); 注意到上面代码第一行了吗?为了让工具知道必须检查哪些文件,我们通过添加注释 @flow在每个要包含在 Flow 监控过程文件。...重启我们开发服务器之后,你会发现项目目录多了一个tsconfig.json文件,这个文件typescript配置文件,你可以对进行一些偏好配置。...让我们ItemsList在我们App.tsx文件实现这个组件并声明一个名为 items 常量,就像一个包含虚拟对象数组一样,看看 TypeScript 如何反应: 您可以看到显示了一个错误

    2K30
    领券