【问题标题】:Paramater 'xxxx' implicitly has an 'any' type参数“x”隐式具有“任何”类型
【发布时间】:2021-07-20 06:33:27
【问题描述】:

我正在尝试使用接受用户信息的表单将多条记录写入本地存储。但是,我遇到以下错误:

“参数 'user' 隐含了一个 'any' 类型。”

我的代码如下:

addUserForm!: FormGroup;
user: any = {};

onSubmit(): void {
    console.log(this.addUserForm.value);
    this.user = Object.assign(this.user, this.addUserForm.value);
    this.user(this.user);
  }

  addUser(user) {
    let users = [];
    if (localStorage.getItem('Users')) {
      users = JSON.parse(localStorage.getItem('Users') || '{}');
      users = [user, ...users];
    } else {
      users = [user];
    }
    localStorage.setItem('Users', JSON.stringify(user));
  }

我尝试在 tsconfig.json 文件中将“noImplicityAny”设置为 false,但结果是,我遇到了一个新错误:

“类型 'any' 不可分配给类型 'never'”:

users = [user, ...users];
    } else {
      users = [user];
    }

任何建议,除了编辑 tsconfig 文件,我们将不胜感激。

编辑:

我也试过这个:

addUser(user: any)

这清除了阻止我运行应用程序的所有错误,但是,当我尝试将新用户添加到本地存储时,我的浏览器记录了以下错误:

ERROR TypeError: this.user is not a function

【问题讨论】:

  • 你不想写this.addUser(this.user);而不是this.user(this.user);吗?
  • 是的,我愿意 - 感谢您选择这个。
  • (这可以解释错误:ERROR TypeError: this.user is not a function
  • @Pac0 我现在收到错误:“ERROR TypeError: users is not iterable”
  • @SeventhWarhawk :最后一个错误意味着您正在使用 user 像一个数组,但事实并非如此。我的猜测是您在某处错误地使用了user 而不是users(您的数组)。

标签: angular typescript local-storage


【解决方案1】:

您可以尝试定义用户界面。类似的东西

interface User {
  name: string
  age: number
  ...
}

然后将您的用户对象设置为该类型,例如user: User

只需使用户界面的形状与您期望从表单中获得的形状相同。

【讨论】:

  • 我试了一下,但遇到了:“属性‘用户’没有初始化器,也没有在构造函数中明确赋值。”
【解决方案2】:

这行得通吗?

  addUserForm!: FormGroup;
  user: any = {};

  onSubmit(): void {
    console.log(this.addUserForm.value);
    this.user = Object.assign(this.user, this.addUserForm.value);
    this.addUser(this.user);
  }

  addUser(user: any) {
    let users = JSON.parse(localStorage.getItem('Users') || '[]');
    users = [user, ...users];
    localStorage.setItem('Users', JSON.stringify(users));
  }

【讨论】:

    猜你喜欢
    • 2018-05-30
    • 2021-06-09
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2020-02-02
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多