繁体   English   中英

“X”类型的参数不能分配给“X”类型的参数

[英]Argument of type 'X' is not assignable to parameter of type 'X'

再会。 我是使用 VSCode 的 Type Script 新手。

收到以下错误:

  1. 错误 TS2322:类型 '() => string' 不可分配给类型 'string'。

  2. 错误 TS2322:类型 '() => number' 不可分配给类型 'number'。

    代码:

    DTO.ts<\/strong>

    链接对象.ts<\/strong>

    我正在尝试使用上述接口方法实例化LinkedObject<\/code>类:

    TravelClientFormPopulator.ts<\/strong>

    任何帮助将不胜感激。

    "

你错过了括号:

var value: string = dataObjects[i].getValue(); 
var id: number = dataObjects[i].getId();

无论如何,如果有人仅在 VSCode 中遇到此问题,只需重新启动 VSCode 即可解决。 有时,Intellisense 似乎与导入或类型混淆。

Typescript相关:“RegExpMatchArray”类型的参数不可分配给“string”类型的参数

还添加其他场景,您可能会看到这些错误

  1. 首先检查你的编译器版本,下载最新的 Typescript 编译器以支持 ES6 语法

  2. 即使输入错误,打字稿仍然会产生输出,这实际上并不会阻止开发,

当您在初始化或调用这些方法或变量时看到这些错误检查语法时,
检查函数的参数是否是错误的数据类型,您初始化为“字符串”并分配了“布尔值”或“数字”

例如

1.

 private errors: string;
    //somewhere in code you assign a boolean value to (string)'errors'
    this.errors=true
    or 
    this.error=5

2.

 private values: Array<number>;    
    this.values.push(value);  //Argument of type 'X' is not assignable to parameter of type 'X'

这里的错误消息是因为缺少数组初始化的方括号,即使没有它也可以工作,但是 VS Code 会出现红色警报。

private values: Array<number> = [];    
this.values.push(value);

笔记:
请记住,Javascript 根据分配的值进行类型转换,因此 typescript 会通知他们,但即使在 VS Code 中突出显示这些错误,代码也会执行

前任:

 var a=2;
 typeof(a) // "number"
 var a='Ignatius';
 typeof(a) // "string"

我正在做 angular 2 和 typescript,但我没有意识到我的箭头符号中有一个空格

我有.map(key = >而不是.map(key =>

绝对要睁大眼睛看愚蠢的语法错误

就我而言,我有一个名为 Item 的自定义接口,但由于自动完成,我意外导入了 angular Item 类。 确保您从正确的包中导入。

您只需使用变量类型any并消除这些类型的问题。

错误代码 :

  let accessToken = res;
  localStorage.setItem(LocalStorageConstants.TOKEN_KEY, accessToken);

给定错误“{}”类型的参数不可分配给“字符串”类型的参数。

成功代码:

  var accessToken:any = res;
  localStorage.setItem(LocalStorageConstants.TOKEN_KEY, accessToken);

我们创建 var 类型变量,然后使用变量类型 any 并解决此问题。

any = 处理任何类型的值,以便消除错误。

我在这个案子上得到了这个

...
.then((error: any, response: any) => {
  console.info('document error: ', error);
  console.info('documenr response: ', response);
  return new MyModel();
})
...

在这种情况下,使参数可选将使 ts 停止抱怨

.then((error?: any, response?: any) => {

就我而言,奇怪的是,我错过了它抱怨的类的导入,而我的 IDE 没有检测到它。

当您的编译器无法理解类型字符串的强制转换运算符与数字之间的区别时,就会出现这个问题。

您可以使用 Number 对象并通过使用Number(<<<<...Variable_Name......>>>>)传递您的值以获得适当的结果

对于无法避免此错误的情况,我们可以@ts-忽略该错误。
在我的情况下,我必须将一个字符串参数传递给 isNaN,它的 ts 定义只允许数字类型的参数。

// @ts-ignore: Argument of type 'string' is not assignable to parameter of type 'number'.
 if (isNaN(myParam)) { 
      throw new Error('myPram should be a number');
 }
but isNaN can accept string params too in javascript
isNaN(123) //false
isNaN('123') //false
isNaN(NaN) //true
isNaN('NaN') //true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM