Der folgende Beispielcode wie erwartet funktioniert und druckt „[Funktion: Datum]“Typoskript Reflect.getMetadata (‚Design: Typ‘ ..) kehrt Objekt statt Datum, wenn die Winkel 2 Stapel
import 'reflect-metadata'
function logType(target : any, key : string) {
var t = Reflect.getMetadata("design:type", target, key);
console.log(`${key} type: ${t.name}`);
}
export class Demo {
@logType // apply property decorator
test: Date;
}
let demo = new Demo();
console.log(Reflect.getMetadata('design:type', demo, "test"));
Wenn ich denselben Code innerhalb eines Angular 2-Projekts platziere, wird "function Object() {[native code]}" zurückgegeben.
bereitete ich eine Plunker dafür: https://plnkr.co/edit/DhXT89U0q5fCOWlCrx6w?p=preview
Reflect.getMetadata ('Design: Typ' ...) funktioniert nach wie vor für benutzerdefinierte Klassen und andere gebautet Klassen. Ich konnte dieses Problem nur mit Date erzeugen.
Was mache ich falsch?
ich hatte das gleiche Problem jedoch nicht Angular verwenden. In meinem Fall beeinflusste die Einstellung "transspileOnly" des TypeScript-Loaders (ts-loader) die Ausgabe. Bei aktivierter Einstellung würde der Rückgabetyp Objekt anstelle von Datum sein. – rgarcia