在 for of 循环中强制转换声明变量

Cast declaration variable inside for of loop

是否有在 "for of" 循环内转换声明变量的更短和简化的版本。

let array1: Array<String | Number>;
for (let a of array1) {
    let ab: String = <String>a;
}

我知道强制转换整个数组是可行的,但是如果我可以强制转换或设置声明变量的数据类型 "a" 而不是强制转换整个数组,我会感到更高兴,就像那可能吗? 如果我输入 let <String>alet a:String 它不起作用。

ref TypeScript casting arrays

let array1 : Array<string | number> = [];
array1.push('abc', 9, 'def', 10);
for (let a of  array1 as Array<string> ){
  console.log(a);
}

类似地,DOM NodeList 上的 forEach 次迭代将被转换为:

const links: NodeListOf<HTMLElement> = document.querySelectorAll('a')
links.forEach(a => a.setAttribute('target', '_blank'))