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

'AnyAction‘类型的参数不能赋值给'never’类型的参数。无法跟踪它

这个问题涉及到类型系统和类型推断的概念。在讨论之前,我想先解释一下类型系统和类型推断的概念。

类型系统是一种编程语言的特性,用于定义和约束变量、函数和表达式的类型。它可以帮助开发人员在编码过程中发现和预防类型错误,提高代码的可靠性和可维护性。

类型推断是类型系统的一部分,它是指编程语言在编译或运行时自动推断变量或表达式的类型,而无需显式地声明类型。通过分析上下文和表达式的结构,类型推断可以确定变量或表达式的类型,并进行类型检查。

现在回到问题本身,'AnyAction'类型的参数不能赋值给'never'类型的参数。这里涉及到两种不同的类型,让我们分别来看一下它们的概念、分类、优势和应用场景。

  1. AnyAction类型:
    • 概念:AnyAction类型是一个泛型类型,表示可以接受任意类型的动作或操作。
    • 分类:AnyAction类型属于动作或操作类型,用于描述在应用程序中可能发生的各种操作。
    • 优势:AnyAction类型的灵活性很高,可以适用于各种不同的操作场景。
    • 应用场景:AnyAction类型常用于状态管理库、异步操作、事件处理等场景。
    • 推荐的腾讯云相关产品:在腾讯云中,没有特定与AnyAction类型相关的产品或服务。
  • never类型:
    • 概念:never类型表示永远不会发生的类型,即不存在的类型。
    • 分类:never类型属于底层类型,用于表示不可能存在的值或不可能发生的情况。
    • 优势:never类型可以用于增强类型安全性,确保某些代码分支永远不会被执行。
    • 应用场景:never类型常用于处理异常情况、错误处理、不可达代码等场景。
    • 推荐的腾讯云相关产品:在腾讯云中,没有特定与never类型相关的产品或服务。

根据问题描述,'AnyAction'类型的参数不能赋值给'never'类型的参数。这是因为'never'类型表示不可能发生的情况,而'AnyAction'类型表示可以接受任意类型的动作或操作。由于'never'类型是不可能存在的类型,所以无法将'AnyAction'类型的参数赋值给'never'类型的参数。

希望这个答案能够满足你的需求。如果你对其他问题有任何疑问,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从 Redux 设计理念到源码分析

学习,也主要是为了学习他编程思想和设计范式。 当然,我们也可以从 Redux 代码里,看看大佬是如何使用 ts 。所以源码分析里面,我们还会去花费不少精力看下 Redux 类型说明。...所以我们从 type 开始看 src/types 看类型声明也是为了学习Redux ts 类型声明写法。所以相似声明写法形式我们就不重复介绍了。...{ // 在 Action 这个接口上额外扩展另外一些任意字段(我们一般写都是 AnyAction 类型,用一个“基类”去约束必须带有 type 字段) [extraProps: string...,接受 S 和继承 Action 默认为 AnyAction A,返回 S export type Reducer =...currentState, action) } finally { // 修改状态 isDispatching = false } // 将 nextListener 赋值

91430

C++核心准则C.60: 拷贝赋值运算符应该是以const&为参数,返回非常量引用类型非虚函数

const&为参数,返回非常量引用类型非虚函数 Reason(原因) It is simple and efficient....implied by the swap implementation technique could cause an order of magnitude increase in cost: 但是能不能通过少进行一次临时拷贝动作来得到明显更高性能呢...通过将数据直接写入对象元素,我们可以得到基本保证而不是通过swap技术提供强保证。为了防止自己自己赋值。...(简单)赋值运算符应该返回T&,这样才能实现连续赋值。不要改成类似const T&类型,这样会影响组装性并妨碍将对象放进容器中。...(中等)赋值运算符应该(隐式或显式)调用所有的基类和成员赋值运算符。观察析构函数以决定这个类型式指针语义还是值语义。

79930

TypeScript学习笔记

但是 Object类型变量只是允许你给它赋任意值 - 但是却不能够在上面调用任意方法,即便它真的有这些方法。 当你只知道一部分数据类型时,any类型也是有用。...就是说你可以把 null和undefined赋值number类型变量。...never类型是任何类型类型,也可以赋值任何类型;然而,没有类型never类型或可以赋值never类型(除了never本身之外)。 即使 any也不可以赋值never。...它就像是一个只有参数列表和返回值类型函数定义。参数列表里每个参数都需要名字和类型。...类型别名不能被 extends和 implements(自己也不能 extends和 implements其它类型) 如果你无法通过接口来描述一个类型并且需要使用联合类型或元组类型,这时通常会使用类型别名

61130

【TypeScript 演化史 — 第三章】标记联合类型never 类型

本质上,编译器跟踪程序控制流以缩小标记联合类型。除了 switch 语句之外,它还要考虑条件以及赋值和返回影响。...这些是 never 类型的确切特征,如下所述: never 是所有类型类型并且可以赋值所有类型。 没有类型never 类型或能赋值 nevernever类型本身除外)。...; } } 该函数由一个不包含 break 或 return 语句无限循环组成,所以无法跳出循环。因此,推断函数返回类型never。...不可能有该类型变量 另一种情况是,never 类型被推断为从不为 ture。在下面的示例中,我们检查 value 参数是否同时是字符串和数字,这是不可能。...但是,咱们也就不能对 value 做任何有用事情,因为类型never,所以咱们编辑器工具不会显示自动显示提示该值有哪些方法或者属性可用。 ?

1K20

TypeScript一些知识点

return x.length; // 判断了类型是 string 时候调用 x.length 才不会报错 } } 尾端类型 尾端类型是所有类型类型只有一个类型就是 never ,该类型甚至没有值...由于它是所有类型类型,所以它可以赋值任何类型,但是其他类型不能赋值给它,包括 any。...let a: never; // OK let b: boolean = a; // OK 它可以赋值任何类型 let c: any = 1; a = c; // Error 其他类型不能赋值给它 a...= 1; // Error never没有值 let d: never = undefined; // Error never没有值 显示设置undefined也不行 注:虽然 never 可以赋值任何类型...由于元组类型是数组类型所以元组类型可以赋值数组类型,前提是元组中每一项都符合数组每一项类型;数组类型不能赋值元组类型

8610

深入浅出 TypeScript

number和bigint类型不能互相赋值。 其他类型 any。绕过编译阶段检查,避免使用。 unknown 。是 any 类型对应安全类型。...never 类型表示是那些永不存在类型never类型是任何类型类型,也可以赋值任何类型;然而,没有类型never类型或可以赋值 never类型(除了never本身之外)。...P : T; 如果 T 能赋值 (param: infer P) => any,则结果是(param: infer P) => any类型参数 P,否则返回为 T,infer P表示待推断函数参数...P : any; 如果T能赋值函数类型,则返回函数返回类型。通过infer P来提取函数返回类型。...也就是说,如果T不能赋值U,则返回该值。如果有多个值不能赋值,则TT是联合类型

2.8K30

4000字讲清 《深入理解TypeScript》一书 【基础篇】

event as HTMLElement; // Error: 'Event' 和 'HTMLElement' 中任何一个都不能赋值另外一个 } 如果你仍然想使用那个类型,你可以使用双重断言。...('Not Implemented') },foo 返回类型never) 你也可以将它用做类型注解: let foo: never; // ok 但是,never 类型仅能被赋值另外一个 never...: let foo: never = 123; // Error: number 类型不能赋值 never 类型 // ok, 做为函数返回类型 never let bar: never = ((...当一个函数没有返回值时,返回了一个 void 类型,但是,当一个函数根本就没有返回值时(或者总是抛出错误),返回了一个 never,void 指可以被赋值类型(在 strictNullChecking...为 false 时),但是 never 不能赋值其他任何类型,除了 never TypeScript 索引签名 JavaScript 在一个对象类型索引签名上会隐式调用 toString 方法

1.9K30

如何进阶TypeScript功底?一文带你理解TS中各种高级语法

(这里 never 代表也就是一个无法达到类型,不会产生任何效果),自然就会被忽略。...: (a: string, b: number, c: boolean) => void; fn1 = fn2; // TS Error: 不能将fn2类型赋值fn1 我们将 fn2 赋值 fn1...自然,这是安全也是被 TS 允许赋值。 就比如上述函数参数类型赋值就被称为逆变,参数少(父)可以赋参数多(子)那一个。...any类型同样支持接收任意类型值,同时赋值其他任意类型(除了never)。...(number)类型 error // ts Error: 类型“unknown”参数不能类型“number”参数 callback(b); 当然,对于以后并不确定类型变量希望大家尽量使用更多

1.7K10

系统学习 TypeScript(三)——基础类型

null 和 undefined 是否可赋值 number 类型变量,取决于编译配置文件中 “--strictNullChecks” 选项是否关闭,一般是建议打开这个选项。...never类型是任何类型类型,也可以赋值任何类型;然而,没有类型never类型或可以赋值never类型(除了never本身之外)。 即使 any也不可以赋值never。...下面是一些返回never类型函数: // 返回never函数必须存在无法达到终点 function error(message: string): never { throw new Error...函数必须存在无法达到终点 function infiniteLoop(): never { while (true) { } } object object 类型包含除了几种基本类型之外所有类型...let aNum = 12; aNum = "number"; // Type 'string' is not assignable to type 'number'. 2、函数方法参数和返回值都可以使用类型限制

60710

实现TypeScript中互斥类型

前言 有这样一个对象,它有两个属性:name与title,在赋值时候这两个属性只有一个能出现,例如:name出现时候title就不能出现,title出现时候name就不能出现。...: string }; never类型 在TypeScript中它有一个特殊类型never,它是所有类型类型无法再进行细分,也就意味着除了其本身没有类型可以再分配给它。...我们举个例子来解释下上述话语,如下所示: 我们定义了一个变量amazing,其赋予了never类型。 我们分别给它赋了不同类型值,全部编译失败,因为无法再进行细分了。...类型不能分配给boolean类型 amazing = "真神奇";// 报错:amazing是never类型不能分配给string类型 amazing = {};// 报错:amazing是never类型不能分配给...当两个属性同时出现时,编辑器直接就抛出了类型错误(我们把排除后所有属性类型设为了never,因此当你其赋任何值时都会报类型错误),如下图所示: [image-20220409221841105]

3.1K40

TypeScript基础——基本类型检查

举个栗子: 变量 //我们定义变量时候,肯定是知道这个变量是存放什么类型数据 let name:string = "法医"; 一旦 name 赋值其它类型,立马会提示错误 举个栗子: 函数参数和返回值...number,赋值变量result,TS还会智能地发现函数返回结果是number,所以result类型也是number,因此我们只需要在参数位置加上类型约束就可以了,TS在每个地方都有类型检查,是不是很牛逼...,null和undefined就不能赋值其它了 3....never { throw new Error(msg) } 由于是永远不会结束,所以,下面的log函数无法执行,无法访问代码 还有一种情况也是永远不会结束,需要手动约束 字面量类型:使用一个值进行约束...,否则报错 tupleType = ["法医",5]; any类型:any类型可以绕过类型检查,因此any类型可以赋值任意类型,但肯定是有隐患,因为无法使用TS提供保护机制,所以不建议随意使用

1.3K10

TypeScript 基础教程

null、undefined: null,undefined :同js值类型,默认是所有类型类型所以,可以任意类型变量赋值null、undefined any: 定义:任意值类型,可以赋值任意值类型...// 返回never函数必须存在无法达到终点 function error(message: string): never { throw new Error(message); } // 推断返回值类型为...never function fail() { return error("Something failed"); } // 返回never函数必须存在无法达到终点 function infiniteLoop...(): never { while (true) { } } Symbol 类型 当前并无支持 type 类型别名 *** 定义:⼀个类型起⼀个新名字,使⽤ type 作为声明关键字。...常用于复合类型数据变量类型声明。 对象类型约定使用大写字母开头 。type 声明类型,里面包含属性必须刚好全部满足,不能多也不能少,否则编译将报错,可选属性除外。

1K20

TypeScript 快速入门(基础篇)

(newArr) 元组 表示 已经 元素个数和元素类型数组,各个元素类型可以不一样。...= 33; console.log(newNum) // 输出 33 never 类型 never 代表不存在类型,常用作为 抛出异常或者 无限循环函数返回类型 # 应用场景 #1....死循环 const date_for = (): never => { while(true) {} } # never 类型是任意类型类型,没有类型never...类型 别的类型不能赋值never类型, 而 never 类型可以赋值任意类型 void 类型 void 为 函数没有类型,一般用在没有返回值函数 # 如果方法类型为number, 则必须返回内容...names = 'XiaoMing' 此时names变量类型为 string names = 22 // TS 已经推断出了names 类型为string,而不能赋值为 其它类型 console.log

93520

TypeScript 常用知识总结

是其他任何类型(包括 void)类型,可以赋值其它类型,如数字类型,此时,赋值类型会变成 null 或 undefined。...而在TypeScript中启用严格空校验(--strictNullChecks)特性,就可以使得null 和 undefined 只能被赋值 void 或本身对应类型 never 是其它类型(包括...这意味着声明为 never 类型变量只能被 never 类型赋值,在函数中通常表现为抛出异常或无法执行到终止点(例如无限循环) 变量不要使用 name 否则会与 DOM 中全局 window 对象下...name 属性出现了重名 类继承使用关键字 extends,子类除了不能继承父类私有成员(方法和属性)和构造函数,其他都可以继承。...如果由于缺乏声明而不能推断出类型,那么类型被视作默认动态 any 类型

1.8K30
领券