У меня есть некоторые проблемы с Typescript и "@ botstan / Magic" библиотекой в nodejs.
прежде чем мы начнем, пожалуйста, прочитайте "Магия" документация .
следуйте линии:
import Magic from "@botstan/magic";
import * as _ from "lodash";
@Magic
export default class Base {
[key: string]: any;
props = {};
constructor (config = {}) {
const self = this;
_.forEach(config, (value, key) => {
self.__set(key, value);
});
}
__isset (name: string): boolean {
name = _.snakeCase(name);
return _.has(this.props, name);
}
__unset (name: string): void {
name = _.snakeCase(name);
_.unset(this.props, name);
}
__set (name: string, value: any): void {
name = _.snakeCase(name);
if (value !== null || value !== undefined) {
_.set(this.props, name, value);
return;
}
_.unset(this.props, name);
}
__get (name: string): any {
name = _.snakeCase(name);
return _.get(this.props, name, undefined);
}
}
Если вы уже видели документацию "Magic" , вы знаете, что мы только что создали класс Magic в Typescript.
import Base from "./Base";
const obj = new Base();
obj.first_name = "Jone";
obj.last_name = "Done";
console.log(obj.first_name); // Jone
console.log(obj); // { props: { first_name: "Jone", last_name: "Done" } }
Класс "Base" работает хорошо, но наша проблема началась, когда я получил расширение от него.
import Base from "./Base";
export default class Example extends Base {
someVar: any = false;
someMethod () {
}
}
А пока позвольте мне проверить пример класса.
import Example from "./Example";
const obj = new Example();
obj.first_name = "Jone";
obj.last_name = "Done";
console.log(obj.first_name); // Jone
console.log(obj); // { props: { }, first_name: "Jone", last_name: "Done" }
Класс «Пример» не работает как класс «Базовый». Что я могу сделать, чтобы это исправить?