TypeScript - 'String' 类型的参数不能分配给'string' 类型的参数

Posted

技术标签:

【中文标题】TypeScript - \'String\' 类型的参数不能分配给\'string\' 类型的参数【英文标题】:TypeScript - Argument of type 'String' is not assignable to parameter of type 'string'TypeScript - 'String' 类型的参数不能分配给'string' 类型的参数 【发布时间】:2021-04-27 02:37:14 【问题描述】:

我正在尝试将扩展方法添加到打字稿中的字符串。请帮我解决以下编译错误。

我在 reactjs 项目的 string-extensions.ts 文件中添加了以下代码。

declare global   
    interface String 
        toNumber(): number;
    
  

String.prototype.toNumber = function()  return parseFloat(this);

export ;

我收到错误: “字符串”类型的参数不能分配给“字符串”类型的参数。 'string' 是一个原始的,但 'String' 是一个包装对象。尽可能使用“字符串”。 TS2345

我在 typescript 编译器上尝试了以下代码。它运行并显示输出,但它也给出了编译器错误:

【问题讨论】:

【参考方案1】:

正如错误中提到的,String 是 TS 的包装对象,parseFloat 接受第一个参数为string

至于解决方法,您可以执行以下操作之一;

String.prototype.toNumber = function()  return parseFloat(this.toString());

// or
String.prototype.toNumber = function()  return parseFloat(this as string);

【讨论】:

不知道为什么我将我的编辑升级到 ESLint,感谢@AluanHaddad 指出这一点 谢谢乔兹。它正在工作。我假设字符串和字符串是相同的。很好地解释了字符串和字符串之间的区别。 ***.com/questions/14727044/…

以上是关于TypeScript - 'String' 类型的参数不能分配给'string' 类型的参数的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript 基础 — string 和 String 的区别

Typescript类型'string'不能分配给类型

Typescript:定义对象的类型

返回特定类型的 TypeScript 键

使用 TypeScript 的条件类型

在 TypeScript 中禁止可索引类型