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

错误:参数类型'Function‘不能赋值给参数类型'void Function()?’

错误:参数类型'Function‘不能赋值给参数类型'void Function()?

这个错误是由于函数参数类型不匹配导致的。在这个错误中,参数类型为'Function',但是被赋值的参数类型为'void Function()',两者不匹配。

解决这个错误的方法是确保函数参数类型与被赋值的参数类型一致。如果你想要将一个没有参数且返回类型为void的函数赋值给一个参数类型为'void Function()'的函数,你可以使用匿名函数或者lambda表达式来实现。

以下是一个示例代码,展示了如何解决这个错误:

代码语言:txt
复制
void main() {
  void Function() myFunction = () {
    // 这里是函数体
    print("Hello, World!");
  };

  // 调用函数
  myFunction();
}

在上面的代码中,我们定义了一个没有参数且返回类型为void的函数myFunction,并将其赋值给一个参数类型为'void Function()'的变量。然后,我们调用myFunction函数,输出"Hello, World!"。

需要注意的是,这个示例代码是使用Dart语言编写的,如果你在其他编程语言中遇到了类似的错误,解决方法可能会有所不同。但是基本思路是一致的,即确保函数参数类型与被赋值的参数类型一致。

希望这个解答对你有帮助!如果你还有其他问题,请随时提问。

相关搜索:错误:参数类型'void Function(bool)‘不能赋值给参数类型'void Function(bool?)’Flutter :参数类型“void Function(Country)”不能赋值给参数类型“void Function(Country?)?”Flutter -函数类型的参数不能赋值给` `void function()`类型的参数如何将'Function‘类型的参数赋值给'void Function()’类型的参数?错误:参数类型'void Function()?‘不能分配给参数类型'void Function(String?)?‘参数类型'CurrentUser? Function(User)‘不能赋值给参数类型'CurrentUser Function(User?)’类型'Function‘不能赋值给类型'(editorState: EditorState) => void’参数类型'void Function()?‘不能分配给参数类型'void Function(String)‘吗?参数类型“void Function(String)”不能分配给参数类型“void Function(String?)?”参数类型'Function?‘不能分配给参数类型'void Function()‘吗?'typeof‘类型的参数不能赋值给'Function’类型的参数参数类型'Widget Function()‘不能赋值给参数类型'String? Function(String?)?’在颤动中参数类型'String‘不能赋值给参数类型'Object? Function(Object?,Object?)?’代码拆分出现React错误(参数类型function()不能赋值给参数类型)不能将参数类型'Object? Function()‘赋值给参数类型'Map<String,dynamic>’不能将参数类型'Future<bool?> Function()‘赋值给参数类型'Future<bool>’参数类型“void Function(String)”不能分配给参数类型“void Function(String?)?”在DropdownButton中错误:不能将参数类型'Null Function(int)‘赋给参数类型'dynamic Function(int,CarouselPageChangedReason)’错误:参数类型'Function‘无法分配给参数类型'void Function()?’。‘Function’来自‘dart:core’。.onPressed: selectHandler不能将参数类型'Map<String,dynamic> Function()‘赋值给参数类型'Map<String,dynamic>’
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【C 语言】数据类型本质 ( void 关键字作用 | 数据类型封装 | 作为 参数 或 返回值 代表无 | void* 指针赋值与被赋值 | void 类型变量不存在 )

文章目录 一、数据类型封装 二、作为 参数 或 返回值 代表无 三、void* 指针赋值与被赋值 四、void 类型变量不存在 一、数据类型封装 ---- 实现函数 的 底层函数开发者 , 不想将 底层的数据结构...暴露给 函数调用者 ; 如 : 定义一个函数 , int initEnv(void **handle) 该函数被 暴露给调用者 , 但是函数的 void **handle 参数类型是 void** ,...; 三、void* 指针赋值与被赋值 ---- C 语言中 , 对指针赋值时 , 只有 相同类型的指针 , 才能相互赋值 ; void* 作为 左值 可以 被赋值 任意类型的 指针 ; void* 作为...右值 赋值给其它类型的指针类型变量时 , 必须将 该指针强转为其它类型 ; 最常见的是使用 malloc() 函数申请内存时 , 其返回一个 void * 类型的指针 ; void *malloc(unsigned...int size); 如果分配内存完毕 , 将其赋值给一个其它类型指针时 , 需要强转 ; int *p = (int*) malloc(sizeof(int) * 10); 四、void 类型变量不存在

2.5K10

(十三)给函数参数添加类型

# 一、给函数参数添加类型 说明 在我们定义函数的时候参数的类型是无法推断的,因为函数只是一段将要执行的代码 对于参数的类型只有在将要调用的时候才会知道,如果对函数参数的值没有限定的时候,就可以传递任意类型的值...如果当某个函数执行的是数学运算的时候我们传入的是一个字符串,那么就会发生不可预期的错误 例 function add(a, b) { console.log(a + b) } // 函数的参数没有类型...,当我们传递其他类型的参数也是可的, 机会出现不可预期的错误 add('hellow', {name: '张三'}) # 使用 ts 对参数值进行限定 function add(a: number, b...: number) { console.log(a + b) } // 因为限定了参数的类型,所以这里使用的时候传递了错误的参数就会报错 add('hellow', {name: '张三'})...# 参数使用联合类型来进行限定 function cmd(args: string | string[]) { if(type args === 'string') { console.log

77630
  • C++进阶:C++11(列表初始化、右值引用与移动构造移动赋值、可变参数模版...Args、lambda表达式、function包装器)

    这个初始化列表对象会隐式地进行类型转换,构造出一个std::vector对象,然后通过拷贝构造函数将这个std::vector对象赋值给变量v。...(如变量名或解引用的指针),我们可以获取它的地址+可以对它赋值,左值可以出现赋值符号的左边,右值不能出现在赋值符号左边。...左值引用就是给左值的引用,给左值取别名 右值也是一个表示数据的表达式,如:字面常量、表达式返回值,函数返回值(这不能是左值引用返回)等等,右值可以出现在赋值符号的右边,但是不能出现出现在赋值符号的左边,...但是const 左值引用可以给右值取别名 右值引用不能给左值取别名,但是右值引用可以给move以后的左值取别名 move其实就是移动语义,move后的左值会变成将亡值 int main...那么如果右值引用本身还是右值,不能被改变,那还怎么进行资源的转移 const 右值 ,右值引用后不能改变 万能引用是 C++11 中引入的一种引用类型,用于实现泛型编程时处理模板类型参数的值类别

    15500

    TypeScript不学?你养我啊

    定义类型的好处 如下,我想求和a和b,但是又错误的给a赋值了'sk',那么c的值就成了拼接字符串的结果。其实这时候要是定义变量的时候约束了类型,在给变量a赋值 'sk'时,就会报错。...function sum(a+b){ return a+b } 函数参数类型声明 我们给参数类型声明为数值,如果我们传参时赋值了字符串,就会报错。...let a:10 a = 12 我们给a赋值12就会报错如下错误 联合类型 使用或者符号()此时,sex赋值必须是字符串"male" 或者 "female" let sex : "male" |...let str:string let e:unknown e ='sss' str = e unknown类型实际上是一个类型安全的any,unknown类型的变量不能赋值给其他变量 unknown类型赋值给...既然在这里提了这个问题,那肯定是用void。 在vsCode编辑器中null返回值不能使用void类型,对于null类型的可以如下面的下面的写法。 而在webstorm中就是可以的。

    89620

    一篇朴实的文章带捋完TypeScript基础,方法是正反对比!

    布尔值是最基础的数据类型,在 TypeScript 中,使用 boolean 定义布尔值类型: 以下都编译通过的,并且给出了说明,一句话总结,是什么类型就要赋值给什么类型,这句话够俗了吧 正确的写法 /...function alertName(): void { alert('My name is Tom'); } //声明一个 void 类型的只能将它赋值为 undefined 和 null...function alertName(): void { return 666; } //声明一个 void 类型的只能将它赋值为 undefined 和 null let unusable:...void = 'I love you'; //➖➖➖➖➖➖➖➖➖Null 和 Undefined➖➖➖➖➖➖➖➖➖ // undefined 类型的变量只能被赋值为 undefined,null 类型的变量只能被赋值为...something.length; } 对象的类型——接口 正确的写法 // 赋值的时候,变量的形状必须和接口的形状保持一致(不能多也不能少,类型还必须一致) interface Person {

    1.1K20

    TypeScript一些知识点

    由于它是所有类型的子类型,所以它可以赋值给任何类型,但是其他类型都不能赋值给它,包括 any。...let a: never; // OK let b: boolean = a; // OK 它可以赋值给任何类型 let c: any = 1; a = c; // Error 其他类型不能赋值给它 a...由于元组类型是数组的子类型所以元组类型可以赋值给数组类型,前提是元组中的每一项都符合数组的每一项类型;数组类型是不能赋值给元组类型的。...函数类型 函数的参数可以是剩余参数,剩余参数类型可以是数组或元组: // 剩余参数是数组 function f(...args: number[]) {} // 剩余参数是元组 function f(...接口可以继承其他接口、类等对象类型。而类型别名不能继承(但可以通过交叉类型 & 来实现类似的功能); 错误提醒对类型别名引用对应的类型,而接口引用接口名。

    11210

    TypeScript学习笔记(二)—— TypeScript基础

    注意,只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候: interface Person { readonly id: number; name: string...上例中,报错信息有两处,第一处是在对 tom 进行赋值的时候,没有给 id 赋值。 第二处是在给 tom.id 赋值的时候,由于它是只读属性,所以报错了。...在 ES6 中,我们允许给函数的参数添加默认值,TypeScript 会将添加了默认值的参数识别为可选参数: function buildName(firstName: string, lastName...; } 那么也不难理解为什么 Cat 类型的 tom 可以赋值给 Animal 类型的 animal 了——就像面向对象编程中我们可以将子类的实例赋值给类型为父类的变量。...则会报错,不允许将 animal 赋值为 Cat 类型的 tom。 这很容易理解,Animal 可以看作是 Cat 的父类,当然不能将父类的实例赋值给类型为子类的变量。

    5.1K20

    前端应该掌握的Typescript基础知识

    , 特别是一些很低级的错误 帮助我们在写代码的时候提供更丰富的语法提示, 方便的查看定义对象上的属性和方法 比如: 你给函数传了一个对象, 你在函数实现的时候还得记住对象里面都有啥参数, 你定义的参数名字是啥..., 可以赋值给其他类型的变量 strictNullChecks 为 true 的话不能赋值给其他类型 let str: string; str = null; str = undefined; 任意类型...:void => {} never 类型 永远不存在的值 任何类型的字类型, 可以赋值给任何类型 但是任何类型都不可赋值给 never, 包括 any function error(msg: string...如果变量定义的时候没有赋值, 默认是 any 类型 let x; // 可以赋值为任何类型的值 let x1 = '生生世世'; // x1会推论成sring类型, 不能给x1赋值为其他类型了 // x1...App; 结构类型系统 接口的兼容性 ts 类型的检查原则, 有一个东西看起来像鸭子、听起来像鸭子、叫起来也像鸭子,那么我们就可以认为他是鸭子 当一个类型 Y 可以被赋值给另一个类型 X 时, 就可以说类型

    60910

    【TypeScript】超详细的笔记式教程【中】

    ,举个 let fibonacci: number = [1,2,3,4] fibonacce.push(true) 这样写也不行,会抛出错误不能将类型“number[]”分配给类型“number”...类数组 类数组不能用数组定义的方式去赋值,举个 function sum() { let args: number[] = arguments; } 这样写会抛出错误类型“IArguments...,函数的参数都是必传的,不能少,也不能多,比如这样: 再比如,这样: 可选参数 与接口中的可选属性类似,用?...,也就是说,可选参数的后面,不能再接必需参数,像这样就不行: 参数默认值 TypeScript会将添加了默认值的参数自动设置为可选参数,举个 function buildName(firstName:...但是有时候我们的写法是完全没有问题的,比如: window.foo = 1 在js中,这种写法完全ok,给window添加属性foo,值为1,但是,在TypeScript中是不支持的,它会抛出这个错误类型

    1K20

    TypeScript基础知识

    如果给同一个函数提供多个函数类型定义,就会产生函数的重载,函数重载真正执行的是同名函数最后定义的函数体,在最后一个函数体定义之前全都属于函数类型定义,不能写具体的函数实现方法,只能定义类型。...any类型 any(任何)会跳过类型检查器对值的检查,任何值都可以赋值给any类型 let value: any = 1; value = '甜甜'; value = []; value = {}; void...,同时any类型的值也可以赋值给任何类型。...unknown 任何类型的值都可以赋值给它,但它只能赋值给unknown和any 类型操作 联合类型 联合类型用|分隔,表示取值可以为多种类型中的一种 let status:string|number...), Function>; // () =>void Readonly 把数组或对象的所有属性值转换为只读的,这就意味着这些属性不能被重新赋值。

    2.2K20

    C语言中void具体有什么作用

    *则不同,任何类型的指针都可以直接赋值给它,无需进行强制类型转换: void *p1; int *p2; p1 = p2; 但这并不意味着,void *也可以无需强制类型转换地赋给其它类型的指针...规则二如果函数无参数,那么应声明其参数为void 在C++语言中声明一个这样的函数: int function(void) { return 1; } 则进行下面的调用是不合法的...: function(2); 因为在C++中,函数参数为void的意思是这个函数不接受任何参数。...在C++ 中,不能向无参数的函数传送任何参数,出错提示“’fun’ : function does not take 1 parameters”。...规则五 void不能代表一个真实的变量 下面代码都企图让void代表一个真实的变量,因此都是错误的代码: void a; //错误 function(void a); //错误

    2K20

    深度讲解TS:这样学TS,迟早进大厂【11】:类型断言

    可是 swim 函数接受的参数是 Cat | Fish,一旦传入的参数是 Cat 类型的变量,由于 Cat 上没有 swim 方法,就会导致运行时错误了。...; } 那么也不难理解为什么 Cat 类型的 tom 可以赋值给 Animal 类型的 animal 了——就像面向对象编程中我们可以将子类的实例赋值给类型为父类的变量。...(); 上面的例子中,我们通过类型声明的方式,将 tom 声明为 Cat,然后再将 any 类型的 getCacheData('tom') 赋值给 Cat 类型的 tom。...Animal = { name: 'tom' }; let tom = animal as Cat; 在上面的例子中,由于 Animal 兼容 Cat,故可以将 animal 断言为 Cat 赋值给...则会报错,不允许将 animal 赋值为 Cat 类型的 tom。 这很容易理解,Animal 可以看作是 Cat 的父类,当然不能将父类的实例赋值给类型为子类的变量。

    1.3K20

    【TypeScript】007-类型断言

    可是 swim 函数接受的参数是 Cat | Fish,一旦传入的参数是 Cat 类型的变量,由于 Cat 上没有 swim 方法,就会导致运行时错误了。...; } 那么也不难理解为什么 Cat 类型的 tom 可以赋值给 Animal 类型的 animal 了——就像面向对象编程中我们可以将子类的实例赋值给类型为父类的变量。...(); 上面的例子中,我们通过类型声明的方式,将 tom 声明为 Cat,然后再将 any 类型的 getCacheData('tom') 赋值给 Cat 类型的 tom。...Animal = { name: 'tom' }; let tom = animal as Cat; 在上面的例子中,由于 Animal 兼容 Cat,故可以将 animal 断言为 Cat 赋值给...则会报错,不允许将 animal 赋值为 Cat 类型的 tom。 这很容易理解,Animal 可以看作是 Cat 的父类,当然不能将父类的实例赋值给类型为子类的变量。

    3600

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券