gpt4 book ai didi

javascript - 使用 ES6 的属性速记通过 typescript 传递对象并避免在参数前面加上接口(interface)名称的简化方法?

转载 作者:行者123 更新时间:2023-11-30 15:04:35 26 4
gpt4 key购买 nike

在 javascript 中,我写了很多像下面这样的函数来利用 ES6 的 property shorthand :

function someFunction({param1, param2}) {
console.log(param1 + " " + param1);
}

//I call it like this:
const param1 = "param1";
const param2 = "param2";
someFunction({param1, param2});

下面是我用 typescript 编写这个函数的方式:

function someFunction(arg: {param1: string, param2: string}) : string {
return arg.param1 + " " + arg.param2;
}

这很好用,但现在我需要在函数体中每次都以“arg”开头我的参数,并且每次都需要给参数一个无用的(“arg”)名称。有没有办法在 typescript 中执行此操作,我可以直接调用这些参数而无需在它们的接口(interface)名称前加上?并避免每次都命名接口(interface)?理想情况下,我希望能够做到这一点:

function someFunction({param1: string, param2: string}) : string {
return param1 + " " + param2;
}

编写起来更简洁、更简单,并且仍然为我提供了我希望从 typescript 中获得的所有好处。有什么办法可以实现吗?

最佳答案

不,你想做的事是不可能的。来自 the specification :

Destructuring parameter declarations do not permit type annotations on the individual binding patterns, as such annotations would conflict with the already established meaning of colons in object literals. Type annotations must instead be written on the top-level parameter declaration.

您可以按如下方式使用解构(有或没有速记语法):

interface MyParameterObj { param1: string, param2: string }

function someFunction({param1, param2}: MyParameterObj) : string {
return param1 + " " + param2;
}

同时内联接口(interface):

function someFunction({param1, param2}: {param1: string, param2: string}) : string {
return param1 + " " + param2;
}

关于javascript - 使用 ES6 的属性速记通过 typescript 传递对象并避免在参数前面加上接口(interface)名称的简化方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45970183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com