【发布时间】:2020-07-01 12:42:10
【问题描述】:
我正在将代码从 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 中的受保护方法之间是否存在很大差异?
【问题讨论】:
标签: typescript oop protected