如何确保克隆的 HTML 节点具有特定的 属性 (单元测试时)?

How can I ensure that a cloned HTML node has a specific property (when Unit Testing)?

我正在使用

创建一个 HTML 克隆

var clone = document.getElementById('tempID').cloneNode(true);

然后,我想使用 clone['id'] = newUniqueID; 编辑 ID(我正在创建多个克隆,因此每个克隆都有自己的 ID)

这在 运行 应用程序时有效,但单元测试不允许,它给出了这个错误:

Property 'id' does not exist on type 'Node'

我尝试将这两行放在这个 if 语句中,以保证该元素存在,但我在单元测试中仍然遇到相同的错误:

if(document.getElementById('tempID') !== null){
  var clone = document.getElementById('tempID').cloneNode(true);
  clone['id'] = newUniqueID;
}

在这种情况下,使用clone['id']时id是保证存在的,那么为什么单元测试声称它不存在呢?解决方法是什么?

注意:由于此错误,整个测试套件无法 运行,因此这不是特定测试的问题。

所以我想通了,我不得不改变:

var clone = document.getElementById('tempID').cloneNode(true);

对此:

var clone: any = document.getElementById('tempID')!.cloneNode(true);

我不确定为什么将其声明为 "any" 会对 id 产生影响,但我必须添加 ! 运算符来告诉编译器该元素不为空。我的 post 中的 if 语句不是必需的。