当前位置: 首页 > 知识库问答 >
问题:

如果函数在对象中已经有两个参数,为什么它需要两个参数?

夏新翰
2023-03-14

我目前正在学习打字稿,我遇到了一个对我来说不太有意义的错误。

以下函数addId有一个对象作为参数

const addId = <T extends object>(obj: T) => {
  const id = Math.random().toString(16)
  return {
    ...obj,
    id,
  }
}

还有一个具有两种泛型类型的接口

interface UserInterface<T, V> {
  name: string;
  data: T;
  meta: V;
}

现在,我创建了一个名为user的对象,它接受一个对象和一个字符串。

const user: UserInterface<{ meta: string }, string> = {
  name: 'Jack',
  data: {
    meta: 'foo',
  },
  meta: 'bar'
}

当我调用函数<code>addId</code>时,它抛出以下错误:<code>Generic type‘UserInterface

const result = addId<UserInterface>(user)
console.log('result', result)

我不明白为什么我会有这个错误,因为< code>user对象有< code>name 、< code>data和< code>meta。

共有1个答案

东方淇
2023-03-14

我真的不清楚你想通过上面的用户声明达到什么目的?但是在我看来,你的问题在于< code >

更新:

尝试像这样进行调用:const结果=addId(user)而不是const结果=addId(

 类似资料:
  • 我有一个非常奇怪的问题,很简单,但我不明白问题是什么。 我有一个类,ClassA调用ClassB中的函数,比如- 类A是在我的applicationContext中定义的bean。类xml ClassB中的函数定义看起来像 IntelliJ没有指出任何语法问题,一切看起来都很正常。。。然而,当我试图编译时,Maven出现了一个异常 B类与a类位于不同的模块中,因此B类位于a类的pom中。作为依赖项

  • 下面的代码分别调用两个简单的函数100亿次。 我的假设是这两个调用的性能几乎相同。如果有的话,我会猜到传递两个参数会比传递一个稍微慢一些。鉴于所有参数都是对象引用,我并不期望其中一个参数是列表这一事实会产生任何差异。 我运行了多次测试,一个典型的结果是“12781/30536”。换句话说,使用两个字符串的调用需要13秒,使用列表的调用需要30秒。 更新 这不是一个公平的测试,原因很多。然而,它确实

  • 我如何优雅地检查这个? 现在我的方式是

  • 我试图在ReactJs中通过一个两个事件的动作,基本上我想要这样的东西 我尝试了1000种不同的语法编写方法 我的预期结果是,当用户单击按钮时,pro1将成为prop2,同时执行“this.continue()”。

  • 问题内容: 必须使用无参数构造函数(像Hibernate这样的工具会在此构造函数上使用反射来实例化对象)。 我得到了这个手挥手的答案,但是有人可以进一步解释吗?谢谢 问题答案: hibernate,并且通常通过反射创建对象的代码用于创建类的新实例。此方法需要一个公共的无参数构造函数才能实例化该对象。对于大多数用例,提供无参数构造函数不是问题。 有一些基于序列化的技巧可以解决没有no-arg构造函数

  • 问题内容: 我在课堂上有这个功能: 我尝试使用此函数来调用该函数: 问题是编译器希望它看起来像这样: 为什么第一个会导致错误? 问题答案: Swift 2.0更新 :现在,默认情况下,函数的功能与方法相同,并且对于两种方法而言: 第一个参数没有外部名称;和 其他参数的外部名称与内部名称相同。 除此之外,下面的规则仍然适用,只是速记语法已消失。 这是一个更一般的答案:函数在类之外定义为真函数时以及在