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

TS2349:此表达式不可调用。类型“void”没有调用签名

TS2349是TypeScript编译器的一个错误代码,表示在代码中使用了一个类型为"void"的表达式,但是"void"类型没有调用签名,因此不能被调用。

在TypeScript中,"void"类型表示函数没有返回值。当一个函数被声明为返回"void"类型时,它不能返回任何值,只能执行一些操作或者改变状态。

例如,下面的代码会触发TS2349错误:

代码语言:txt
复制
function greet(): void {
  console.log("Hello!");
}

greet(); // TS2349: 此表达式不可调用。类型“void”没有调用签名。

在这个例子中,函数"greet"被声明为返回"void"类型,它只会在控制台打印"Hello!",而没有返回任何值。因此,尝试调用"greet()"会触发TS2349错误,因为"void"类型没有调用签名。

解决这个错误的方法是确保不要尝试调用返回"void"类型的函数,或者将函数的返回类型更改为可以被调用的类型,例如"number"、"string"或"boolean"等。

腾讯云相关产品和产品介绍链接地址:

  • 云函数(Serverless):https://cloud.tencent.com/product/scf
  • 云开发(CloudBase):https://cloud.tencent.com/product/tcb
  • 云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 人工智能(AI):https://cloud.tencent.com/product/ai
  • 物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 移动开发(移动推送):https://cloud.tencent.com/product/umeng
  • 存储(对象存储):https://cloud.tencent.com/product/cos
  • 区块链(区块链服务):https://cloud.tencent.com/product/tbaas
  • 元宇宙(腾讯元宇宙):https://cloud.tencent.com/solution/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# Func<>托付「建议收藏」

假设方法有返回值,则使用Func,或者Func 假设方法没有返回值,则使用Action,或者Action Func(T arg) 參数类型 T 托付封装的方法的參数类型。...TR 托付封装的方法的返回值类型。 參数 arg 类型 T 托付封装的方法的參数。...这里我们除了使用Func托付外,还是用了Labdab表达式.这里我再谈谈这个表达式. Lambda表达式的基础类型是泛型 Func托付之中的一个。...尤其是,由于 System.Linq命名空间中很多类型方法具有Func參数,因此能够给这些方法传递 lambda表达式。...Main(string[] args){// 使用一个命名方法实例化托付类型/* * 写法一,须要写出专门托付的函数,还须要自己定义托付 **/MathAction ma = Double;//注意这里千万不可

42820

50个常见的 Java 错误及避免方法(第一部分)

有若干途径会触发“Invalid Method Declaration; Return Type Required” 错误: 忘记声明类型 如果方法没有返回值,那么需要将“void”声明为方法签名中的类型...它解阐明了方法签名正在调用错误的参数。 ? 调用的方法期待方法声明中定义的某些参数。检查方法声明并仔细调用,以确保它们是兼容的。...每个返回值(非void类型)的方法都必须有一个字面上返回该值的语句,以便在方法之外调用它。 ?...该方法没有返回任何值,但类型void在方法签名中未声明。 查看如何修复“Missing Return Statement”Java软件错误的示例。(@StackOverflow) 10....阅读关于如何在Java软件中转换不可转换的类型的讨论。(@StackOverflow) 16.

2.1K30
  • C# 9.0新特性介绍

    默认情况下,记录是不可变的。 使用Record类型可在 .NET 中轻松创建不可变的引用类型。 以前,.NET 类型主要分为引用类型(包括类和匿名类型)和值类型(包括结构和元组)。...遗憾的是,C# 强制编写大量额外的代码来创建不可变的引用类型。Record为不可变的引用类型提供类型声明,该引用类型使用值语义实现相等性。...可在 with 表达式中设置任意数量的属性。 你可编写除“克隆”方法以外的任何合成成员。 如果记录类型的方法与任何合成方法的签名匹配,则编译器不会合成该方法。...类似的功能可改进条件表达式的目标类型解析。进行更改后,两个表达式无需从一个隐式转换到另一个,而是都可隐式转换为目标类型。你可能不会注意到此更改。...模块初始化表达式方法: 必须是静态的 必须没有参数 必须返回 void 不能是泛型方法 不能包含在泛型类中 必须能够从包含模块访问 最后一个要点实际上意味着该方法及其包含类必须是内部的或公共的。

    2K20

    C# 9.0 中的新增功能

    1、记录类型 C# 9.0 引入了记录类型,这是一种引用类型,它提供合成方法来提供值语义,从而实现相等性。 默认情况下,记录是不可变的。 使用记录类型可在 .NET 中轻松创建不可变的引用类型。...遗憾的是,C# 强制编写大量额外的代码来创建不可变的引用类型。 记录为不可变的引用类型提供类型声明,该引用类型使用值语义实现相等性。...可在 with 表达式中设置任意数量的属性。 你可编写除“克隆”方法以外的任何合成成员。 如果记录类型的方法与任何合成方法的签名匹配,则编译器不会合成该方法。...类似的功能可改进条件表达式的目标类型解析。 进行更改后,两个表达式无需从一个隐式转换到另一个,而是都可隐式转换为目标类型。 你可能不会注意到此更改。...模块初始化表达式方法: 必须是静态的 必须没有参数 必须返回 void 不能是泛型方法 不能包含在泛型类中 必须能够从包含模块访问 最后一个要点实际上意味着该方法及其包含类必须是内部的或公共的。

    1.7K20

    TypeScript 官方手册翻译计划【四】:函数

    它们同样也是值,就和其它值一样,TypeScript 有很多种描述函数如何被调用的方式。接下来,让我们了解如何编写类型去描述函数吧。 函数类型表达式 最简单的描述函数的方式就是使用函数类型表达式。...如果一个类型参数在函数签名中只使用了一次,那么它其实没有关联任何东西。...举个例子,下面的写法都是错误的,因为实现签名没有正确地匹配重载签名: function fn(x: boolean): void; // 参数类型不对 function fn(x: string): void...void void 表示没有返回任何值的函数的返回值。...只要某个函数没有 return 语句,或者 return 语句中没有返回任何显式的值,那么函数的返回值类型就会被推断为 void: // 返回值的类型被推断为 void function noop()

    2.6K20

    SqlAlchemy 2.0 中文文档(四十一)

    注意 方法仅相对于特定方言类型对象调用,该对象通常私有于使用的方言,并且不是与公共类型对象相同的类型对象,这意味着不可能通过继承TypeEngine类来提供替代的TypeEngine.result_processor...注意 方法仅相对于特定方言类型对象调用,该对象通常私有于正在使用的方言,并且不是公共类型对象,这意味着不可通过子类化TypeEngine 类来提供替代的TypeEngine.literal_processor...另请参阅 UUID - 表示没有任何后端不可知行为的 UUID 数据类型。...注意 方法仅相对于特定方言类型对象调用,该对象通常是私有于正在使用的方言的,并且不是公共类型对象,这意味着不可通过子类化TypeEngine类来提供替代的TypeEngine.bind_processor...注意 方法仅相对于特定方言类型对象调用,该对象通常是私有于正在使用的方言的,并且不是公共类型对象,这意味着不可通过子类化TypeEngine类来提供替代的TypeEngine.literal_processor

    29210

    TypeScript 之 More on Functions

    然而上一节讲到的函数类型表达式并不能支持声明属性,如果我们想描述一个带有属性的函数,我们可以在一个对象类型中写一个调用签名(call signature)。...第一个函数可以推断出返回的类型是 number,但第二个函数推断的返回类型却是 any,因为 TypeScript 不得不用约束的类型来推断 arr[0] 表达式,而不是等到函数调用的时候再去推断这个元素...如果一个类型参数只在函数签名里出现了一次,那它就没有跟任何东西产生关联。...再次强调一下,写进函数体的签名是对外部来说是“不可见”的,这也就意味着外界“看不到”它的签名,自然不能按照实现签名的方式来调用。 实现签名对外界来说是不可见的。...void void 表示一个函数并不会返回任何值,当函数并没有任何返回值,或者返回不了明确的值的时候,就应该用这种类型

    2.1K20

    扩展方法必须在非泛型静态类中定义

    对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用类型中实际定义的方法之间没有明显的差异。...下面的示例演示如何对一个整数数组调用标准查询运算符 OrderBy 方法。 括号里面的表达式是一个 lambda 表达式。 ...与接口或类方法具有相同名称和签名的扩展方法永远不会被调用。 编译时,扩展方法的优先级总是比类型本身中定义的实例方法低。 ...MethodB 扩展方法永远不会被调用,因为它的名称和签名与这些类已经实现的方法完全匹配。 如果编译器找不到具有匹配签名的实例方法,它会绑定到匹配的扩展方法(如果存在这样的方法)。...如果你确实为给定类型实现了扩展方法,请记住以下几点: 如果扩展方法与该类型中定义的方法具有相同的签名,则扩展方法永远不会被调用。 在命名空间级别将扩展方法置于范围中。

    1.9K10

    CSharp委托与匿名函数

    Action委托类存在不同的变体,可以传递至多16种不同的参数类型没有泛型参数的Action类可以调用没有参数的方法。...其某两个原型定义如下: // 没有参数 + 1个返回类型 public delegate TResult Func(); // 2个参数 + 个返回类型 public delegate...Lambda表达式: (匿名的函数签名) => (匿名的函数体) 其中匿名的函数签名可以包括两种,一种是隐式的匿名函数签名另一种是显式的匿名函数签名: 隐式的函数签名:(p)、(p1,p1) 显式的函数签名...当Lambda表达式只有一个具有隐式类型化参数的时候,参数列表可以省略圆括号,也就是说: (参数) => 表达式 可以简写为 参数 => 表达式 匿名方法表达式: delegate (显式的匿名函数签名...当没有参数或者是多个参数的时候,Lambda表达式是不能够省略括号的;匿名方法表达式允许完全省略参数列表。

    21120

    C#3.0新增功能10 表达式树 04 执行表达式

    限制在实践中影响不大。 Lambda 表达式是你可通过转换为可执行的中间语言 (IL) 来执行的唯一表达式类型。 (思考直接执行 ConstantExpression 意味着什么。...由于此类型映射到一个委托类型,因此 .NET 可以检查表达式,并为匹配 lambda 表达式签名的适当委托生成 IL。 在大多数情况下,这将在表达式和其对应的委托之间创建简单映射。...必须将其转换为正确的委托类型,以便使任何编译时工具检查参数列表或返回类型。 执行和生存期 通过调用调用 LambdaExpression.Compile() 时创建的委托来执行代码。...(请记住,表达式树是不可变的,且在之后编译同一表达式树将创建执行相同代码的委托。) 在此提醒你不要通过避免不必要的编译调用尝试创建用于提高性能的任何更复杂的缓存机制。...出现表示编译时构造的运行时错误确实很奇怪,但这是使用表达式树时的正常现象。 问题存在大量的排列,因此很难提供用于避免问题的一般性指导。

    86520

    C#.NET 当我们在写事件 += 和 -= 的时候,方法是如何转换成事件处理器的

    public event FileSystemEventHandler Changed; 这里的 FileSystemEventHandler 是一个委托类型: 1 public delegate void...编译器类型转换 具有相同签名的不同委托类型,彼此之前并没有继承关系,因此在运行时是不可以进行类型转换的。...然而,我们可以放 Lambda 表达式,可以放匿名函数,可以放方法组,也可以放局部函数。因为这些类型可以在编译期间,由编译器帮助进行类型转换。...必须是同一个对象的同一个方法 所以: 使用方法组、静态局部函数、委托字段的方式创建的委托实例,在 += 和 -= 的时候无视哪个委托实例,都是可以减掉的; 使用局部函数、委托变量,在同一个上下文中,是可以减掉的,如果调用是再次进入函数...,则不能减掉(因为委托方法所在的对象实例不同) 使用 Lambda 表达式、匿名函数是不能减掉的,因为每次编写的 Lambda 表达式和匿名函数都会创建新的包含对象的实例。

    29230

    std::function与std::bind使用总结

    C++中函数指针的用途非常广泛,例如回调函数,接口类的设计等,但函数指针始终不太灵活,它只能指向全局或静态函数,对于类成员函数、lambda表达式或其他可调用对象就无能为力了,因此,C++11推出了std...std::function可以说是函数指针的超集,它除了可以指向全局和静态函数,还可以指向彷函数,lambda表达式,类成员函数,甚至函数签名不一致的函数,可以说几乎所有可以调用的对象都可以当做std:...:function,当然对于后两个需要使用std::bind进行配合,而至于指向其他类型可以参考以下代码: typedef std::function PrintFinFunction...::bind的用法就是第一个参数是要被指向的函数的地址,为了区分,这里std::bind语句的左值函数为原函数,右值函数为新函数,那么std::bind方法从第二个参数起,都是新函数所需要的参数,缺一不可...箭头后面是返回值类型,如果返回值类型void,箭头和返回值类型都可以省略,如第一部分给出的例子一样。 函数体在花括号范围内。

    11.2K92

    C#7.3 新增功能

    可以对支持模式的任何类型使用 fixed 语句。 可以使用其他泛型约束。 对现有功能进行了以下增强: 可以使用元组类型测试 == 和 !=。 可以在多个位置使用表达式变量。...添加功能意味着 fixed 可与 System.Span 和相关类型配合使用。 有关详细信息,请参阅语言参考中的 fixed 语句一文。...如果方法在含有实例接收器的情况下被调用,则编译器将丢弃静态成员。 在没有接收器时,编译器将仅添加静态上下文中的静态成员,否则,将同时添加静态成员和实例成员。...3.1 公共或开放源代码签名 -publicsign 编译器选项指示编译器使用公钥对程序集进行签名。 程序集被标记为已签名,但签名取自公钥。...选项使你能够使用公钥在开放源代码项目中构建签名的程序集。 有关详细信息,请参阅 -publicsign 编译器选项一文。

    1.6K10

    Lambda 学习记录

    Lambda管中窥豹 可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表。...(1) 这个Lambda没有参数,并返回void。它类似于主体为空的方法:publicvoid run() {}。(2) 这个Lambda没有参数,并返回String作为表达式。...例如,Runnable接口可以看作一个什么也不接受什么也不返回(void)的函数的签名,因为它只有一个叫作run的抽象方法,这个方法什么也不接受,什么也不返回(void)。...第一个例子有效,是因为Lambda()-> {}具有签名()-> void,这和Runnable中的抽象方法run的签名相匹配。请注意,代码运行后什么都不会做,因为Lambda是空的!...可以写为: image.png 使用方法引用 image.png 总结 Lambda表达式可以理解为一种匿名函数:它没有名称,但有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常的列表。

    49220

    Java基础:二、方法、参数和返回值(6)

    参数列表给出了要传给方法的信息的类型和名称 方法名和参数列表,合起来被成为“方法签名”唯一地标识出某个方法 Java中的方法只能作为类的一部分来创建,方法只有通过对象才能被调用。...x的类型兼容 这种调用方法的行为通常被称为发送消息给对象。...其次,如果方法产生了一个值,这个值要放在return语句后面。...在上面的例子中,返回值是通过计算s.length()*2这个表达式得到的 定义方法返回任意想要的类型,也可以不返回任何值,可以指定方法返回void 如果返回类型void,return关键字的作用只是用来退出方法...,并且没有必要到方法结束时才离开,可在任何地方放回 void nothing(){ return; }

    85610

    Java 中文官方教程 2022 版(四)

    使用EvenIterator类的实例调用方法,使其执行与printEven方法相同的功能。...使用 lambda 表达式调用方法,以打印具有偶数索引值的元素。再次使用 lambda 表达式调用方法,以打印具有奇数索引值的元素。...@Inherited @Inherited 注解指示注解类型可以从超类继承。(默认情况下不是这样。)当用户查询注解类型并且类没有类型的注解时,将查询类的超类以获取注解类型注解仅适用于类声明。...图形公司然后使用接口中定义的签名和返回类型调用图像处理方法。...你可以在子类中编写一个新的静态方法,其签名与超类中的方法相同,从而隐藏它。 你可以在子类中声明超类中没有的新方法。

    18700

    C#委托的介绍(delegate、Action、Func、predicate)

    必须有返回值,不可void 例: public int Test(Funcfunc,T1 a,T2 b) { return func(a,...封装的方法必须与此委托定义的方法签名相对应。 也就是说,封装的方法必须具有四个均通过值传递给它的参数,并且不能返回值。 (在 C# 中,该方法必须返回 void)通常,这种方法用于执行某个操作。...委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素。...如果 X 和 Y 字段的乘积大于 100,000,委托表示的方法 ProductGT10 将返回 true。Find 方法为数组的每个元素调用委托,在符合测试条件的第一个点处停止。...委托可以链接在一起;例如,可以对一个事件调用多个方法。 方法不必与委托签名完全匹配。

    35020
    领券