TypeScript 是否有一种方法可以通过引用传递参数给方法?

33

我有一个获取参数并进行计算的方法。在这个方法中,会改变参数的值。当从该方法返回时,这些参数会继续传递到其他方法进行更多计算。

是否有一种方法可以通过引用将参数传递给方法,或者唯一的方法是将参数加入对象并返回它们?


1
可能是如何在Typescript函数中包含输出参数?的重复问题。 - Eiver
我会将它们作为一个对象传递。这样很容易理解,读你代码的人也能明白。 :) - MartyIX
Eiver,感谢您的回答。我看到了这个问题,没有办法通过引用传递。在TS中唯一的方法是返回对象。 - C.Frank
2个回答

49

使用JavaScript和TypeScript,您可以通过引用传递对象,但不能通过引用传递值。因此,请将您的值封装到一个对象中。

因此,不是:

 function foo(value1: number, value2: number) {
     value1++;
     value2++;
 }

做:

function foo(model: {property1: number; property2: number}) {
     model.property1++;
     model.property2++;

     // Not needed but
     // considered good practice.
     return model;
}

const bar = { property1: 0, property2: 1 };
foo(bar);

console.log(bar.property1) // 1
console.log(bar.property2) // 2

TS Playground上查看完整演示。


2
你如何调用这样的函数来影响调用实际参数 v1、v2?是这样吗 this.foo( {property1: v1, property2: v2 } ) ; ? 谢谢。 - Meryan
@Arkilo,这个绝对可行。我已经包含了一个指向上述解决方案TypeScript Playground的链接。 - Martin
2
那不是通过引用传递给函数。最初的问题是关于通过引用传递给函数,而不是使用方法更新成员属性。 - Martin
这是怎么不通过引用传递的呢?该函数接受一个对象,根据定义它总是通过引用传递。你这里实际上正在做同样的事情。 - Faisal Afzal
@Arkilo,你的回答中 modifydata(x:string,value:string) 并没有通过引用传递给函数或方法。这些是值而不是引用。 - Martin
显示剩余3条评论

-2

你可以将属性名称(必要时还可以包括对象)传递给一个方法


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接