Javascript 与数组.from()等效的TypeScript
在TypeScript中是否有一个Javascript 与数组.from()等效的TypeScript,javascript,arrays,typescript,dom,Javascript,Arrays,Typescript,Dom,在TypeScript中是否有一个数组.from()等价物? 或者,有没有一种方法可以使用浏览器中的Array.from()实现 我正在尝试将节点列表转换为数组,以便使用数组方法。 这就是我对香草JavaScript所做的: const divs = document.querySelectorAll('div'); const arrDivs = Array.from(divs); const result = arrDivs.map(e => {...}); Array.from()
数组.from()
等价物?或者,有没有一种方法可以使用浏览器中的
Array.from()
实现
我正在尝试将节点列表转换为数组,以便使用数组方法。这就是我对香草JavaScript所做的:
const divs = document.querySelectorAll('div');
const arrDivs = Array.from(divs);
const result = arrDivs.map(e => {...});
Array.from()
在TypeScript中不可用,它有自己的Array
实现
因此,我想我必须将其转换为元素[]
或HTMLElement[]
如下:
const arrDivs = <HTMLElement[]>divs;
这似乎忽略了TypeScript固有的类型安全性。所以我想知道是否有更好或更正确的方法来做到这一点?或者以某种方式调用现代浏览器中的本机Array.from()
函数
更新我的编译器告诉我,
Property'from'在类型“ArrayConstructor”上不存在。
以下是我的编译器选项:
"compilerOptions": {
"sourceMap": true,
"outDir": "dist",
"strict": true,
// Linting rules:
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
}
确保您在
tsconfig.json
中的目标是ES2015或更高版本:
"compilerOptions": {
"target": "es2015"
}
当您忽略该字段时,它是一个JS版本,可以数组。from
不是一件事。这对我很有效
使用数组上方的/@ts ignore
。from(divs)行
运行代码。所有javascript都可以从typescript获得,而不是从数组获得。
from()在typescript中不可用,它有自己的数组实现。
,不,typescript没有实现任何东西,它只是为javascript提供类型支持。如果您可以用JavaScript做一些事情,那么您也可以用TypeScript做一些事情-在一个更安全、更好的环境中数组。from()
您的编译器选项是什么?您应该能够使用[…divs].map(…)
。可能还缺少一些编译器选项。这是有道理的。实际上,我更愿意将其保留到ES3,因为这段代码将在电视浏览器上运行,其中一些正在运行非常旧的JS解释器。如果这是您的目标,那么我会通过webpack使用babel和typescript的组合。我会以typescript中的es2020
为目标,并指示babel loader
动态提供polyfill,并将代码库降低到支持我在中列出的目标浏览器所需的任何位置。browserslistrc
。最终以ES5为目标,在HTML集合上使用for循环。
"compilerOptions": {
"target": "es2015"
}