TypeScript报Type 'bigint'无法赋值给BigInt的ts(2322)报错如何解决

报错核心原因
这个TS2322报错和bigint字面量特性无关,本质是类型标注写错了:TypeScript中小写bigint和大写BigInt是两个完全不兼容的类型,和number与Number、string与String的区分规则完全一致:
- 小写
bigint是ECMAScript规定的原始类型,0n这类bigint字面量、BigInt()普通调用的返回值都属于这个类型,是日常开发做类型标注的正确选择 - 大写
BigInt是bigint对应的包装对象类型,只有new BigInt()构造出来的实例才属于这个类型,和其他包装对象类型一样,业务开发中几乎不会用它做变量标注
类型系统不允许原始类型值赋值给包装对象类型的变量,所以才会抛出类型不匹配的错误。
简洁规范的解决方法
不需要用BigInt(0)做转换绕路,直接把变量的类型标注从大写BigInt改成小写bigint即可:
// 错误写法,会触发TS2322报错 let count: BigInt = 0n; // 正确写法,无报错,符合TS类型规范 let count: bigint = 0n;
通用规则提示:所有原始类型的标注都应该使用小写形式:
string/number/boolean/bigint/symbol,不要使用大写的包装对象类型做标注,避免出现同类类型不兼容问题。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

