这可能不是简单的打字稿,我已经写了大约2天的打字稿。
我希望能够获取一个对象并返回相同类型的对象,但是会在属性设置器中注入一些日志记录(或其他内容)。
即我想要像这样的对象;
interface Foo {
data : string;
}
并返回类似a;
class DecoratedFoo implements Foo {
foo : Foo;
constructor(foo : Foo) { this.foo = foo }
set data(data:string) {
console.log(data);
this.foo.data = data;
}
get data():string {
return this.foo.data;
}
}
很明显,如果我传递的对象具有不同的类型,例如;
interface Bar {
xyz : number;
}
我会得到等价的
class DecoratedBar implements Bar {
bar : Bar;
constructor(bar : Bar) { this.bar = bar; }
set xyz(xyz:number) {
console.log(xyz);
this.bar.xyz = xyz;
}
get xyz():number {
return this.bar.xyz;
}
}
我已经看过打字稿的一些高级打字功能,感觉就像;
function extend<T, U>(first: T, second: U): T & U {
let result = <T & U>{};
for (let id in first) {
(<any>result)[id] = (<any>first)[id];
}
for (let id in second) {
if (!result.hasOwnProperty(id)) {
(<any>result)[id] = (<any>second)[id];
}
}
return result;
}
但是我需要做类似的事情
function wrapWithLogging<T>(t : T) : T {
let result = <T>{};
for (let id in t) {
(<any>result)[id] = ???
}
}
我的打字稿可怜(我只是在尝试一些角度),我不懂JavaScript,我是C#等行业的后端开发人员