Angular下如何解决number类型参数不可分配给string类型的TS报错
报错根因
Argument of type 'number' is not assignable to parameter of type 'string'
该报错是TypeScript类型校验触发的,核心原因是parseInt()的首个入参要求为字符串类型,但你代码中传入的(num % b) / a是两个number变量运算得到的number值,类型不匹配。
解决方案
你当前的运算逻辑本身就是数值运算,不需要调用parseInt做字符串转数字的处理,直接用数值取整方法即可,最优修改方式如下:
columnName(num: number) { for (var ret = '', a = 1, b = 26; (num -= a) >= 0; a = b, b *= 26) { // 直接用Math.floor取整,不需要parseInt,完全符合原有逻辑 ret = String.fromCharCode(Math.floor((num % b) / a) + 65) + ret; } return ret; }
如果确实需要保留parseInt的写法(不推荐),可以手动把数值运算结果转为字符串:
ret = String.fromCharCode(parseInt(String((num % b) / a)) + 65) + ret;
修改后即可通过TypeScript的类型校验,功能和原有逻辑完全一致。
内容的提问来源于stack exchange,提问作者Testcse Cseapi
相关产品推荐
相关产品推荐

