Tha*_*you 5 destructuring typescript spread-syntax
忽略这是一个不好的add功能.这是一个关于在TypeScript中使用带有扩展语法的数组解构的问题.
这就是我正在尝试的
const add = ([x,...xs]) => {
if (x === undefined)
return 0
else
return x + add(xs)
}
console.log(add([1,2,3])) //=> 6
Run Code Online (Sandbox Code Playgroud)
但我不知道如何添加TypeScript类型.我最好的猜测是做这样的事情(最直接的翻译)
const add = (xs: number[]): number => {
if (xs[0] === undefined)
return 0;
else
return xs[0] + add(xs.slice(1));
};
console.log(add([1,2,3])); // => 6
Run Code Online (Sandbox Code Playgroud)
这两种职能的工作,但在打字稿我失去解构阵列参数,函数体被junked了像一堆难看的东西的能力,并xs[0]与xs.slice(1)-即使我这些抽象到自己的职能,这是除了点.
是否可以在TypeScript中添加类型来解构扩展参数?
到目前为止我尝试过的
这样的东西适用于固定数组
// compiles
const add = ([x,y,z]: [number, number, number]): number => ...
Run Code Online (Sandbox Code Playgroud)
但当然我需要可变长度数组输入.我试过这个,但它没有编译
// does not compile
const add = ([x, ...xs]: [number, number[]]): number => ...
Run Code Online (Sandbox Code Playgroud)
我的错,答案很简单:
const add = ([x, ...xs]: number[]) => {
if (x === undefined)
return 0
else
return x + add(xs)
}
console.log(add([1, 2, 3])); //=> 6
add(["", 4]); // error
Run Code Online (Sandbox Code Playgroud)
(操场上的代码)
你可以这样做:
const add: (nums: number[]) => number = ([x, ...xs]) => {
if (x === undefined)
return 0
else
return x + add(xs)
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用类型别名:
type AddFunction = (nums: number[]) => number;
const add: AddFunction = ([x, ...xs]) => {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1079 次 |
| 最近记录: |