müsste ich den Dateinamen einer importierten Klasse erhalten:js erhalten Dateinamen-Datei mit Klassendefinition
fileA.js
export default class User {
}
fileB.js
import User from './fileA'
function getClassFilename(constructor) {
// do something like __filename, but to get the filename where User is defined rather than the current filename
}
console.log(getClassFilename(User.constructor)) // fileA.js
Dies ist Grund Idee. Allerdings ist die tatsächliche Anwendungsfall basiert auf Dekorateure:
fileA.js
import someDecorator from './decorator'
@someDecorator
class User {
}
decorator.js
export default function (target) {
// can I somehow get the target filename without passing it as a property?
}
Vielen Dank für den Vorschlag. Leider musste ich nun feststellen, dass ich versucht habe, meinen Anwendungsfall zu sehr zu verallgemeinern, da ich versuche, den Dateinamen innerhalb eines Dekorators zu finden, der auf die Klasse angewendet wird. Ich werde die Frage aktualisieren. Entschuldigung dafür – Chris
@Chris: Im Grunde die gleiche Antwort (ich habe aktualisiert): Wenn das Modul die Informationen nicht zur Verfügung stellt, werden Sie nicht haben, damit zu arbeiten. –
Toller Hinweis. Ich kann den Namen der Klasse einfach als eine Eigenschaft hinzufügen, auf die ich dann zugreifen kann, ohne sie explizit exportieren/importieren zu müssen. – Chris