Javascript 将接口转换为Typescript中的函数参数

Javascript 将接口转换为Typescript中的函数参数,javascript,typescript,function,types,interface,Javascript,Typescript,Function,Types,Interface,我想知道的是,是否可以使用接口来描述需要传递给函数的参数。例如: interface Person { name: string; age: number; } function createPerson(name: string, age: number) {} 我想使用Person接口作为createPerson参数的参考。到目前为止,我一直在使用: function createPerson(name: Person['name'], age:

我想知道的是,是否可以使用接口来描述需要传递给函数的参数。例如:

  interface Person {
      name: string;
      age: number;   
  }

  function createPerson(name: string, age: number) {}
我想使用Person接口作为createPerson参数的参考。到目前为止,我一直在使用:

function createPerson(name: Person['name'], age: Person['age']) {}

虽然这总比什么都没有好,但我仍然不知道这是否是最好的方法,因为我仍然需要重写所有参数名。有更好的选择吗?提前感谢。

您可以使函数接受1个对象,而不是2个单独的参数。例如,您可以这样做


函数createPerson(p:Person){}
我99.9%确信没有一种方法可以像那样“传播”接口的类型定义,这不仅仅是因为接口没有顺序,而函数参数有顺序

您可以按照问题中的说明进行操作,也可以直接接受
Person
对象:

function createPerson(person: Person) { /* ... */ }
或者使用分解:

function createPerson({name, age}: Person) { /* ... */ }
无论哪种方式,您都可以使用对象来调用它,例如:

const createdPerson = createPerson({name: "Aylton Almeida", age: 20});

这不是对你实际提出的问题的回答,而是:你考虑过接受一件物品吗?例如,
函数createPerson(person:person)
(或者
函数createPerson({name,age}:person)
。是的,我在寻找这个“传播”接口或诸如此类的东西。对我来说,接受整个对象不是一个好选择,但总比什么都不接受好。Tnks。@AyltonAlmeida-今天我自己也想要这个,我想知道…TypeScript是如此的灵活…也许有什么…?所以我Ping了,一位TypeScipt专家,他确认没有办法这么做(至少,在整个TypeScript构建过程中没有什么可以依赖的)。@AyltonAlmeida-FWIW,您可以通过.So使用另一种方式(稍微)使用。因此,如果您(比如)有
函数foo(a:string,b:number):string;
,那么
类型FooParameters=Parameters
就是元组类型
[a:string,b:number]
(已标记的元组,但不能访问类型系统或代码中的元组标签)。