Haz*_*ziq 52 typescript angular
我正在使用chrome 70和chrome确实添加了方法.flatMap, .flatten, .flat.所以我的代码确实按预期运行.不幸的是,Typescript不喜欢它.
// data.flatMap lint error
export const transformData = (data: any[]) => data.flatMap(abc => [
parentObj(abc),
...generateTasks(abc)
]);
Run Code Online (Sandbox Code Playgroud)
我得到的警告是 TS2339: Property 'flatMap' does not exist on type 'any[]'.
通过我使用的方式Angular 6,它使用Typescript ~2.9.2我已经包括import 'core-js/es7/array';在polyfills.ts.
我的猜测是这些方法没有打字,我确实试过npm run -dev @types/array.prototype.flatmap但仍未解决.
Aar*_*all 125
您应该添加es2019或者es2019.array你--lib设置为打字稿识别array.flat()和flatMap().
例:
{
"compilerOptions": {
"target": "es5",
"lib": [
"es2019"
]
}
}
Run Code Online (Sandbox Code Playgroud)
Man*_*ana 24
扁平化单层阵列
arr.reduce((acc, val) => acc.concat(val), []);
Run Code Online (Sandbox Code Playgroud)
扁平化多级阵列
function flatDeep(arr, d = 1) {
return d > 0 ? arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatDeep(val, d - 1) : val), []) : arr.slice();
};
Run Code Online (Sandbox Code Playgroud)
要深入了解,您还可以查看以下链接
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
小智 15
Aaron Beall 的回答非常好。如果在 tsConfig.JSON 文件中未指定“lib”,则会注入默认的库列表,这可能是值得知道的。注入的默认库是:对于 --target ES5: DOM,ES5,ScriptHost ? 对于 --target ES6: DOM,ES6,DOM.Iterable,ScriptHost
换句话说:我们必须指定之前自动添加的那些库。(请参阅:https : //www.typescriptlang.org/docs/handbook/compiler-options.html了解更多信息)
"compilerOptions": {
"target": "es6",
"lib": [ "es2019", "DOM", "ES6" ,"DOM.Iterable", "ScriptHost"],}
Run Code Online (Sandbox Code Playgroud)
小智 8
我尝试了大多数答案,但它们对我不起作用。IDE:VScode
但这确实
npm i -D @types/node
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24353 次 |
| 最近记录: |