带部分类型注释的TypeScript函数参数解构

时间:2019-02-10 20:25:30

标签: typescript

让我们考虑一下示例:

function func1(num: number) {
  return num * 2;
}

function func2(by: number, num = func1(1)) {
  return num / by;
}

效果很好。在func2中,不必为num参数提供类型,因为它是从func1提供的。

但是当我以参数对象解构的形式编写func2时,我必须在num中手动为func3提供一种类型:

function func3({ by, num = func1(1) }: { by: number, num: number }) {
  return num / by;
}

如何编写func3而不用重新键入num的类型?这样的事情(下面的代码不起作用):

function func3({ by, num = func1(1) }: { by: number }) {
  return num / by;
}

1 个答案:

答案 0 :(得分:1)

不幸的是,目前没有更好的方法。改善这一想法的想法已经浮出水面了一段时间,但是编译器团队尚未找到一个好的想法。 This问题是最新的建议,@ RyanCavanaugh说,他们正在再次尝试,请看看结果如何。现在,您必须在类型注释

中再次写出名称。