У меня есть приложение React Native, которое я программирую с помощью TypeScript (3.6.3). У меня есть следующий код (фактический код взят из библиотеки API, но это минимально воспроизводимый пример):
class Base{
someVal: string[];
constructor() {
this.someVal = [];
}
someMethod<T extends Base>(this: T, ...someArgs:string[]){
debugger;
this.someVal = someArgs;
}
}
class Derived extends Base{
}
let myVar = new Derived().someMethod('hello');
Код точно имитирует код библиотеки и ведет себя так же (ошибочно). Нет ошибок или предупреждений компилятора. Когда я запускаю код, я ожидаю, что someArgs
будет ['hello']
, но это undefined
. Кроме того, у меня есть массив arguments
, который содержит фактическое значение ['hello']
:
![enter image description here](https://i.stack.imgur.com/X0gTu.jpg)
На данный момент код (который являетсяпереносится Бабелем на лету) действует как Javascript (следовательно, неопределенная фактическая переменная и переменная фантомных аргументов). Почему он не отображается правильно и как мне это исправить? (Я нахожусь на ядре Babel 7.6.2)
Вот соответствующий код из сгенерированного index.bundle
:
var Base = function () {
function Base() {
(0, _classCallCheck2.default)(this, Base);
this.someVal = [];
}
(0, _createClass2.default)(Base, [{
key: "someMethod",
value: function someMethod() {
debugger;
for (var _len = arguments.length, someArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
someArgs[_key - 1] = arguments[_key];
}
this.someVal = someArgs;
}
}]);
return Base;
}();
var Derived = function (_Base) {
(0, _inherits2.default)(Derived, _Base);
function Derived() {
(0, _classCallCheck2.default)(this, Derived);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Derived).apply(this, arguments));
}
return Derived;
}(Base);
var myVar = new Derived().someMethod('hello');