Desidero riesportare un intero modulo e sovrascrivere solo una funzione specifica del modulo riesportato. Ma sembra che l'esportazione della funzione di override non venga elaborata quando la stessa funzione è già reesportata.es2015 modulo di riesportazione e sovrascrittura della funzione di esportazione singola del modulo riesportato
(http://www.ecma-international.org/ecma-262/6.0/#sec-module-semantics-static-semantics-early-errors, 'si tratta di un errore di sintassi se i ExportedNames di ModuleItemList contiene tutte le voci duplicate.')
La motivazione dietro il mio approccio è quello di ridurre al minimo ri-esportazione di un modulo molto grande o molto esplicito, se io desidera solo eseguire l'override di una funzione o un metodo specifici nel modulo riesportato.
Esiste un modo per implementare il mio approccio in es6/es2015?
Il mio codice finora:
modulo-a.js
export class MyFirstStandardClass {
sendMeMessages() {
return `hello, I'm a standard implementation`;
}
}
export function talkToMe() {
return `standard talking: how are you doing?`;
}
module-b.js
import * as StandardModule from 'module-a';
export function talkToMe(condition = true) {
if (condition) {
return `project conditional talking: ${StandardModule.talkToMe()}`;
}
return `project without a condition!`;
}
export * from 'module-a';
module-c.js
import * as MyModule from 'module-b';
import React, { Component } from 'react';
export default class App extends Component {
componentWillMount() {
console.log(MyModule);
this.myFirstStandardInstance = new MyModule.MyFirstStandardClass();
}
render() {
return (
<div>
<label>
Class
</label>
<div>
{ this.myFirstStandardInstance.sendMeMessages() }
</div>
<label>
Function
</label>
<div>
{ MyModule.talkToMe(true) } // returns 'standard talking: how are you doing?'; expected 'project conditional talking: standard talking: how are you doing?'
</div>
</div>
);
}
}
2 Grazie per la risposta. L'ho già provato e funziona. Ma se hai molti moduli secondari nel modulo, la lista sarebbe molto lunga. –