Function 如何在TypeScript中定义函数,并使用destrcutured数组作为参数

Function 如何在TypeScript中定义函数,并使用destrcutured数组作为参数,function,typescript,parameters,Function,Typescript,Parameters,我是TS新手,但对最新的JavaScript非常有经验。我想使用ES6中我熟悉的功能。一个特别的方法是在函数的参数中使用数组分解。我了解到,您可以在TS中使用接口来执行对象分解,如下所示: interface FooParameters { bar: any } function foo ({ bar }: FooParameters) { console.log(bar) } foo({ bar: 'fizz' }) // logs "fizz" 但我似乎找不到关于将以下JS转换

我是TS新手,但对最新的JavaScript非常有经验。我想使用ES6中我熟悉的功能。一个特别的方法是在函数的参数中使用数组分解。我了解到,您可以在TS中使用
接口
来执行对象分解,如下所示:

interface FooParameters {
  bar: any
}

function foo ({ bar }: FooParameters) {
  console.log(bar)
}

foo({ bar: 'fizz' })
// logs "fizz"
但我似乎找不到关于将以下JS转换为TS的文档

function foo ([bar]) {
  console.log(bar)
}

foo(['fizz'])
// logs "fizz"

在仔细考虑了@bnieland的建议后,我终于猜出了正确的答案。我需要用相应的参数及其类型定义一个内联元组

function foo ([bar]: [string]) {
  console.log(bar)
}

foo(['fizz']) // logs "fizz"

我不清楚这里的spread操作符如何让我访问参数栏。这不允许将多个变量放入一个数组中吗?我想从其中取一个变量。在这种情况下。。。已确认为“rest”操作员()。感谢您的澄清。我让它工作,但我必须做以下工作,使它工作。您可能希望编辑您的答案以澄清函数栏([bar]:FooParameters[]){console.log(bar)}的有趣性;所以你不需要参数,对吗?否则您将需要使用:let a=['fizz'].map((v)=>({bar:v}));foo(…a);似乎正确的答案是
函数foo([bar]:[string]){}
我从未见过数组的构造(即
函数foo([bar]:[string])
),它与
函数foo([bar]:[string])有什么不同吗
?仅供参考:我相信你知道,但这是一个尝试这些纯语言问题的好地方!谢谢你的提示!但是你能澄清一下你的第一个回答吗?这两个声明在我看来是一样的!你是对的!这就是我的意思!
函数foo([bar]:[string])
函数foo([bar]:string[])相比
对不起,我已经深入挖掘了一些,我意识到
函数foo([bar]:string[])
确实适用于上述代码。我还意识到,我给出的这个示例没有解决我的问题,因为我试图从数组中解构两个参数,它们是不同的类型,这就是我需要元组的原因
function foo ([bar]: [string]) {
  console.log(bar)
}

foo(['fizz']) // logs "fizz"