构建:'string | 类型的参数1' 不可分配给“字符串”类型的参数

Posted

技术标签:

【中文标题】构建:\'string | 类型的参数1\' 不可分配给“字符串”类型的参数【英文标题】:Build:Argument of type 'string | 1' is not assignable to parameter of type 'string'构建:'string | 类型的参数1' 不可分配给“字符串”类型的参数 【发布时间】:2017-08-30 22:43:42 【问题描述】:

我有这个打字稿代码:

categoryColumnWide: number = 0;

this.categoryColumnWide = parseInt(storage.getItem('categoryColumnWide') || 1);

给我以下错误:

严重性代码描述项目文件行抑制状态 错误构建:'string | 类型的参数1' 不可分配给 “字符串”类型的参数。

有人可以帮我解决这个问题吗?我刚刚升级到新版本的 Typescript,这条消息现在出现在多个地方。当我将鼠标悬停在 categoryColumnWide 上时,它说它是一个“数字”

仅供参考据我所知,我使用的是 Typescript 2.1

【问题讨论】:

如果storage.getItem('categoryColumnWide') 返回一个假值,那么1 将被选择并作为参数传递给parseInt,并且由于parseInt 期望string,它表示您不能分配一个数字转字符串! 改成parseInt(storage.getItem(...) || "1")Number((storage.getItem(...) || 1))就可以解决问题了! 或者您可以在开始使用之前检查该项目是否在存储中,例如:if(storage.getItem('categoryColumnWide')) storage.setItem('categoryColumnWide', '1'); ! 或只是parseInt(storage.getItem('categoryColumnWide')) || 1 @AlekseyL。如果storage.getItem('categoryColumnWide')返回"0"怎么办? 【参考方案1】:

parseInt 需要字符串参数

您的代码通过storage.getItem('categoryColumnWide')(字符串)或1(数字)

尝试将1 作为字符串传递

this.categoryColumnWide = parseInt(storage.getItem('categoryColumnWide') || '1');

【讨论】:

以上是关于构建:'string | 类型的参数1' 不可分配给“字符串”类型的参数的主要内容,如果未能解决你的问题,请参考以下文章

“字符串”类型的参数不可分配给“$string”类型的参数 | `$string.$string` | `$string.$number`'

JWT:'string | 类型的参数undefined' 不可分配给'Secret' 类型的参数

节点 js + 反对 js + Postgresql。 ' token: string ' 类型的参数不可分配给 'PartialUpdate<User>' 类型的参数

打字稿:“RegExpMatchArray”类型的参数不可分配给“字符串”类型的参数

“响应”类型的参数不可分配给“字符串”类型的参数

NestJS Postgres Prisma - 错误类型'字符串'不可分配给参数类型'TemplateStringsArray | Sql'