当我使用Object.assgin()
类型脚本时,我正在使用扩展操作符和object.assgin克隆类实例,将我的代码编译到es5中,这会导致运行时错误,但是在使用扩展操作符类型脚本时会生成错误。
这是一个说明问题的代码示例。
class foo {
fooMethod() {
return "foo method"
}
}
let fooInstance = new foo();
let bar = { ...fooInstance };
console.log(bar.fooMethod());
类型'{fooVariable:any;不存在属性'fooMethod' }'。
但是,当使用Object.assgin()
打字稿替换扩展运算符时,会将代码编译为es5,没有任何错误。
class foo {
fooMethod() {
return "foo method"
}
}
let fooInstance = new foo();
let bar = Object.assign({},fooInstance);
console.log(bar.fooMethod());
当这两个代码都导致相同的运行时错误时,为什么打字稿的行为有所不同?