首页 > 解决方案 > C++ 类引用成员变量的打字稿等价物

问题描述

class B;
class A {
    A(B b_) : b{b_} {}
    B &b;
};

C++ 可以有一个引用成员变量 b。

我可以在打字稿中做到这一点吗?

还是有什么利基方法可以实现这一目标?

标签: c++typescriptreference

解决方案


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++ 那样复制整个对象,只是引用。


推荐阅读