ES6 ES5 Babel:
MyClass , :
index.js ( , )
symbols.js ( )
extraMethods.js (, )
index.js
import symbols from "./symbols";
export default class MyClass {
[symbols.existentPrivateMethod]() {
return "this is the result";
}
}
import additionalMethod, {anotherAdditionalMethod, additionalPrivateMethod} from "./additionalMethods";
const additionalMethodsObject = {
additionalMethod: additionalMethod,
anotherAdditionalMethod: anotherAdditionalMethod
};
additionalMethodsObject[symbols.additionalPrivateMethod] = additionalPrivateMethod;
Object.assign(MyClass.prototype, additionalMethodsObject);
AdditionalMethods.js
import symbols from "./symbols";
export default function additionalMethod() {
return this[symbols.existentPrivateMethod]();
}
export function anotherAdditionalMethod() {
return this[symbols.additionalPrivateMethod]();
}
export function additionalPrivateMethod() {
return "yet another result";
}
Symbol.js
const symbols = {
existentPrivateMethod: Symbol("myPrivateMethod"),
additionalPrivateMethod: Symbol("additionalPrivateMethod")
};
export default symbols;
https://github.com/nicosommi/partialClass
https://nicosommi.com/2015/08/10/partial-class-approach-for-es6/