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

Typescript:“不能赋值给类型为never的参数”错误

Typescript是一种静态类型检查的编程语言,它是JavaScript的超集,为JavaScript代码提供了类型检查和编译时错误检测的功能。在Typescript中,当我们尝试将一个值赋给类型为never的参数时,会出现“不能赋值给类型为never的参数”错误。

首先,让我们了解一下never类型。never类型表示那些永远不会发生的值的类型。它通常用于表示抛出异常或永远不会返回的函数的返回类型。在函数中,如果函数体内存在无法到达的终点(如抛出异常、死循环等),则可以将该函数的返回类型标注为never。

当我们尝试将一个值赋给类型为never的参数时,编译器会发现这是一个类型错误。这是因为never类型的值是不可赋值的,它表示不可能存在的情况。因此,如果我们尝试将一个值赋给类型为never的参数,编译器会提示错误。

以下是一些可能导致出现该错误的示例代码:

代码语言:txt
复制
function throwError(message: string): never {
  throw new Error(message);
}

function infiniteLoop(): never {
  while (true) {
    // do something
  }
}

function test(param: never) {
  // do something
}

test(123); // 错误示例,尝试将一个值赋给类型为never的参数

在上面的示例代码中,throwError函数抛出一个错误,返回类型被标注为never。infiniteLoop函数是一个死循环,也返回never类型。当我们尝试将一个值赋给类型为never的参数时,编译器会提示错误。

总结一下,Typescript中的“不能赋值给类型为never的参数”错误是因为我们尝试将一个值赋给类型为never的参数,而never类型表示不可能存在的情况。因此,我们应该检查代码逻辑,确保不会出现这种错误的情况。

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

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

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

相关·内容

使用下标string类型赋值之后,cout输出变量问题。

今天写创建文件夹时候,怎么创建都不会,反复修改,确定错误是出在了string类型变量上面。...看下面代码 //这个一个函数中代码,函数参数是string fileurl_s int len = fileurl_s.length(); std::string...,以及子文件夹,根据参数来做,有则略过,无则创建 但是我发现根本创建不了文件夹 我试着输出循环中fileurl_s_cy[i],能够正常输出我想要字符 但是当我输出fileurl_s_cy时候出了问题...,fileurl_s_cy至始至终空,长度也空,导致无法正常创建文件夹 明明可以正常输出fileurl_s_cy[i],但是无法正常输出fileurl_s_cy,本以为是’\0’问题,发现加上也无济于事...解决方法如下: 声明时候改为std::string fileurl_s_cy(len,’\0’); 这样就可以正常使用下标赋值,输出以及整体输出 怕忘记,记录与此。

5K40

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

= CardSuit.Clubs; // 类型安全 Card = 'not a member of card suit'; // Error: string 不能赋值 `CardSuit` 类型...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 = ((... false 时),但是 never 不能赋值其他任何类型,除了 never TypeScript 索引签名 JavaScript 在一个对象类型索引签名上会隐式调用 toString 方法

1.9K30

TypeScript查漏补缺(基础类型)

**所有类型都可以赋值any,也可以赋值unknown**。...void,但void不能赋值undefined void类型不能赋值undefined这是符合正常情况:即只能赋值自己和any类型 function sayHello(): void {...图片 可以发现:我们传参boolean时,会在运行时抛出我们自定义错误,但是再编译时没法检测出问题。这时候就能利用never来实现编译时就检测出问题。...上面的例子中,else分支nickname会被收窄boolean类型,而boolean类型无法被赋值never类型,所以会出现编译错误,就能够提前检测出错误,避免很多没必要问题。...使用never类型能够避免新增联合类型,但是没有对应实现情况 参考链接: 一份不可多得 TS 学习指南(1.8W字) TypeScript never 类型

89020

TypeScript never 类型

在定义变量时,可以设置变量类型 never 类型: let foo: never; // 定义never类型变量 never 类型是任何类型类型,也可以赋值任何类型: let bar: string...= (() => { throw new Error('TypeScript never'); })(); 然而,没有类型never 类型或可以赋值 never 类型(除了 never...let baz: never = 123; // 赋值失败,number类型不能赋值never类型变量 // 定义never类型变量,接收返回值类型never类型函数返回值 let bar:...; } } 注意在 else 分支里面,我们把收窄 never foo 赋值一个显示声明 never 变量。...方法中控制流程,这时候 else 分支 foo 类型会被收窄 boolean 类型,导致无法赋值 never 类型,这时就会产生一个编译错误

4.1K10

TypeScript 快速入门(基础篇)

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

96120

TypeScript不学?你养我啊

如上图,可以说Ts是Js超集。 定义类型好处 如下,我想求和a和b,但是又错误a赋值了'sk',那么c值就成了拼接字符串结果。...let a:number; 当我们a赋值字符串时,就会提示错误。 并且我们再执行编译时候,也会报错。但是即使报错也会将ts成功编译成相应js文件。...let c:boolean = false 如果我们在声明完直接赋值,并且没有定义类型。如下,此时bool赋值true,然后又赋值123。此时也会报错。因为Ts会自动判断类型。...function sum(a+b){ return a+b } 函数参数类型声明 我们参数类型声明为数值,如果我们传参时赋值了字符串,就会报错。...let str:string let e:unknown e ='sss' str = e unknown类型实际上是一个类型安全any,unknown类型变量不能赋值其他变量 unknown类型赋值

88420

TypeScript一些知识点

TypeScript中有两种顶端类型: any unknown any 类型允许执行任意操作而不会产生编译错误(但运行时候也可能出现错误),通常用于跳过类型检查: const a: any = 0; a.length...由于它是所有类型类型,所以它可以赋值任何类型,但是其他类型不能赋值给它,包括 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 可以赋值任何类型...由于元组类型是数组类型所以元组类型可以赋值数组类型,前提是元组中每一项都符合数组每一项类型;数组类型不能赋值元组类型

10010

TypeScript 常用知识总结

TypeScript 通过类型注解提供编译时静态类型检查。 TypeScript数据要求带有明确类型,JavaScript不要求。 TypeScript 函数提供了缺省参数值。...更好协作: 当开发大型项目时,会有许多开发人员,此时乱码和错误机也会增加。类型安全是一种在编码期间检测错误功能,而不是在编译项目时检测错误。这开发团队创建了一个更高效编码和调试过程。...是其他任何类型(包括 void)类型,可以赋值其它类型,如数字类型,此时,赋值类型会变成 null 或 undefined。...而在TypeScript中启用严格空校验(--strictNullChecks)特性,就可以使得null 和 undefined 只能被赋值 void 或本身对应类型 never 是其它类型(包括...这意味着声明为 never 类型变量只能被 never 类型赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环) 变量不要使用 name 否则会与 DOM 中全局 window 对象下

1.8K30

TypeScript 基础类型

undefined undefined 用于初始化变量一个未定义never never never 是其它类型(包括 null 和 undefined)类型,代表从不会出现值。...Null 和 Undefined 是其他任何类型(包括 void)类型,可以赋值其它类型,如数字类型,此时,赋值类型会变成 null 或 undefined。...而在TypeScript中启用严格空校验(--strictNullChecks)特性,就可以使得null 和 undefined 只能被赋值 void 或本身对应类型,示例代码如下: // 启用...; // 运行错误,数字类型不能转为 never 类型 x = 123; // 运行正确,never 类型可以赋值 never类型 x = (()=>{ throw new Error('exception...')})(); // 运行正确,never 类型可以赋值 数字类型 y = (()=>{ throw new Error('exception')})(); // 返回值 never 函数可以是抛出异常情况

61610

《一》大话 TypeScript 基本类型

补充类型 void any never 元祖 枚举 高级类型 语法 (变量/函数): type // [type 上面的数据类型 ] 简单类型 let bool: boolean = true let...元组 作用: 限定数组类型和个数 看例子: 第一个必须 number ,第二个必须 string , 只能有2个值, 不能超过2个 // 可以该元祖添加新元素, 但不能 “越界” 访问...('3'); //正常push tuple[2] //报错, 因为越界访问了 undefined null 如果一个值声明了 undefined , 则不能赋值其他类型值....看例子: let x:undefined = undefined; //正常 let y:undefined = '1'; //报错 同理, undefined 和 null 也不能赋值其他类型....黄金法则: 能不写 any 场景, 就别写 any never 一般很少使用, 场景: 函数抛出错误 或 死循环时使用 never function error(message): never

72410

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

这些是 never 类型的确切特征,如下所述: never 是所有类型类型并且可以赋值所有类型。 没有类型never 类型或能赋值 nevernever类型本身除外)。...不可能有该类型变量 另一种情况是,never 类型被推断从不为 ture。在下面的示例中,我们检查 value 参数是否同时是字符串和数字,这是不可能。...在这种情况下,TypeScript 推断出 never 类型,因为咱们已经将 value 参数注解类型 string | number,也就是说,除了string 或 number, value 参数不可能有其他类型...这样函数在 TypeScript 中被推断有一个 void 返回类型。 具有 never 返回类型函数永不返回。它也不返回 undefined。...该函数没有正常完成,这意味着它会抛出一个错误,或者根本不会完成运行。 函数声明类型推断 关于函数声明返回类型推断有一个小问题。

1K20

javascript typescript_typescript python

而在TypeScript中启用严格空校验(–strictNullChecks)特性,就可以使得null 和 undefined 只能被赋值 void 或本身对应类型 10.never: never...这意味着声明为 never 类型变量只能被 never 类型赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环) let x: never; let y: number; // 运行错误...,数字类型不能转为 never 类型 x = 123; // 运行正确,never 类型可以赋值 never类型 x = (()=>{ throw new Error('exception...')})(); // 运行正确,never 类型可以赋值 数字类型 y = (()=>{ throw new Error('exception')})(); // 返回值 never...// 运行错误,数字类型不能转为 never 类型 x = 123; // 运行正确,never 类型可以赋值 never类型 x = (function () { throw new Error

57310

一文看懂any,never,void和unknown区别

ts不会管any类型检查 在上面的代码中一般来说如果something被初始化为一个字符串类型后,是不可以被赋值number或者boolean类型,不过由于我们声明了它类型是any所以TypeScript...,我们只需要一股脑将它传递给console.log函数即可,这个时候我们就可以将函数参数类型设置any了 类型缺失或者补全困难:这种情况一般发生在我们使用了第三方JS编写库时候,我们没有办法知道某个导出函数具体类型...用法 never类型只接受never类型对象,甚至万金油any类型都不可以赋值never类型。...因为PM类型不可以赋值never类型 } } 上面代码报错原因是TechDude这个类型在else这个代码体里面已经被TypeScript收拢PM类型,所以不再是never类型了。...总结 本篇文章通过例子大家介绍了TypeScript中几个容易混淆类型any,unknown,never和 void,希望能帮助有需要的人解答到疑惑。

82930

typescript 数据类型有哪些

TypeScript 下工作; 为了保证兼容性,TypeScript 在编译阶段需要编译器编译成纯 JavaScript 来运行,是大型应用之开发而设计语言。...,这时候可以使用any类型 使用any类型允许被赋值任意类型,甚至可以调用其属性、方法 let num:any = 123; num = 'str'; num = true; 定义存储各种类型数据数组时...,表示一个空对象引用,而undefined表示一个没有设置值变量 默认情况下null和undefined是所有类型类型, 就是说你可以把 null 和 undefined 赋值 number 类型变量...function hello(): void { alert("Hello Runoob"); } never never是其他类型 (包括null和 undefined)类型,可以赋值任何类型...,代表从不会出现值 但是没有类型never 类型,这意味着声明 never 变量只能被 never 类型赋值

13210
领券