在TypeScript中将对象属性复制到另一个对象,导致错误TS2339

在TypeScript中将对象属性复制到另一个对象,导致错误TS2339,types,typescript,extend,typescript1.6,Types,Typescript,Extend,Typescript1.6,我使用extend()函数来扩展对象: 还有一个类Observer()有一个方法Update()和一个对象check,它是HTMLInputElement类型。 我使用extend()函数来扩展复选框,因此它将具有方法Update()。 然后导致错误TS2339:类型“HTMLInputElement”上不存在属性“Update” 如何修复此错误?更改extend()函数?以下是您要查找的代码段吗 class Observer extends HTMLInputElement{

我使用
extend()
函数来扩展对象:

还有一个类
Observer()
有一个方法
Update()
和一个对象
check
,它是
HTMLInputElement
类型。

我使用
extend()
函数来扩展
复选框
,因此它将具有方法
Update()

然后导致错误TS2339:
类型“HTMLInputElement”上不存在属性“Update”


如何修复此错误?更改
extend()
函数?

以下是您要查找的代码段吗

class Observer extends HTMLInputElement{
    Update: any;
}

var check:Observer = <Observer>document.createElement("input");

check.Update = function(value) {
    this.checked = value;
}
类观察者扩展HTMLInputElement{
更新:有;
}
变量检查:Observer=document.createElement(“输入”);
check.Update=函数(值){
该值为已检查值;
}

对于一个

功能扩展(对象:T,扩展:U){
Object.keys(obj.forEach)((key)=>{
扩展[键]=对象[键];
});
返回扩展名为T&U;
}
var检查:HTMLInputElement;
var extended=extend(新观察者(),检查);
//HTMLInputElement属性使用示例
扩展属性;
//此处也没有编译错误:
extended.Update=函数(值){
该值为已检查值;
};
class Observer {
    Update(value) { }
}
var check:HTMLInputElement = document.createElement("input");
extend(new Observer(), check);
check.Update = function(value) {
    this.checked = value;
}
class Observer extends HTMLInputElement{
    Update: any;
}

var check:Observer = <Observer>document.createElement("input");

check.Update = function(value) {
    this.checked = value;
}
function extend<T, U>(obj: T, extension: U) {
    Object.keys(obj).forEach((key) => {
        extension[key] = obj[key];
    });

    return extension as T & U;
}

var check: HTMLInputElement;
var extended = extend(new Observer(), check);

// example HTMLInputElement property use
extended.attributes;
// no compile error here either:
extended.Update = function(value) {
    this.checked = value;
};