c++ - C++ 类引用成员变量的打字稿等价物
问题描述
class B;
class A {
A(B b_) : b{b_} {}
B &b;
};
C++ 可以有一个引用成员变量 b。
我可以在打字稿中做到这一点吗?
还是有什么利基方法可以实现这一目标?
解决方案
JavaScript(因此 TypeScript)没有像 C 或 C++ 这样的引用机制。您通过值传递值,对象通过引用传递。但是您不能像在 C 或 C++ 中那样修改底层引用:
// This does not work in JavaScript
let x = 27;
let y = &x;
*y = 28;
assert(x === 28);
然而,你可以做这样的事情。
class B {
public foo: string;
}
class A {
public constructor(public b: B) {}
}
const b = new B();
b.foo = 'bar';
const a = new A(b);
b.foo = 'foobar';
assert(a.b.foo === 'foobar');
请注意,这不会像 C++ 那样复制整个对象,只是引用。