我正在将代码从PHP移植到NodeJs(Typescript)。 我碰到了以下PHP代码(简体)
<?php
class A {
protected function protectedData() {
return 'accessible';
}
}
class B extends A {
public function extractTest($anInstanceOfA) {
return $anInstanceOfA->protectedData();
}
}
$instanceA = new A();
$instanceB = new B();
echo $instanceB->extractTest($instanceA);
在沙箱中运行它会产生回显“可访问”。
我用Typescript编写了相同的代码,但这似乎不起作用...
class A {
protected protectedData(): string {
return 'accessible';
}
}
class B extends A {
public extractTest(anInstanceOfA: A): string {
return anInstanceOfA.protectedData();
}
}
const instanceA = new A();
const instanceB = new B();
console.log(instanceB.extractTest(instanceA));
错误:属性'protectedData'受保护,并且只能通过类'B'的实例进行访问。(2446)
在Typescript中是否可以实现此目的,或者PHP和Typescript中的受保护方法之间有很大区别?