【问题标题】: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"怎么办?

标签: javascript typescript


【解决方案1】:

parseInt 需要字符串参数

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

尝试将1 作为字符串传递

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-02
    • 2021-06-16
    • 2021-09-07
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多