platMap, plat, plat은 type any[]에 존재하지 않습니다.
Chrome 70을 사용하고 있는데 Chrome이 메서드를 추가합니다..flatMap
,.flatten
,.flat
그래서 내 코드는 예상대로 실행된다.유감스럽게도 TypeScript는 그것을 좋아하지 않습니다.
// data.flatMap lint error
export const transformData = (data: any[]) => data.flatMap(abc => [
parentObj(abc),
...generateTasks(abc)
]);
제가 받은 경고는TS2339: Property 'flatMap' does not exist on type 'any[]'.
Typescript ~ 2.9.2를 사용하는 Angular 6을 사용하고 있으며, 이미 다음을 포함합니다.import 'core-js/es7/array';
에polyfills.ts
.
이 방법들은 타이핑이 되지 않을 것 같아서npm run -dev @types/array.prototype.flatmap
아직 해결하지 못했습니다.
추가하셔야 합니다.es2019
또는es2019.array
고객님께--lib
TypeScript가 인식하기 위한 설정array.flat()
그리고.flatMap()
.
예:
{
"compilerOptions": {
"target": "es5",
"lib": [
"es2019"
]
}
}
이전에는 이 기능을esnext
또는esnext.array
하지만 지금은 공식적으로 ES2019의 일부입니다.
es2019보다 낮은 버전인 경우 심을 구현하여 다음과 같은 기능을 제공할 수 있습니다..flat()
그리고..flatMap()
최신 라이브러리에서 제공되고 있습니다.
단일 레벨 배열을 평탄하게 하려면
arr.reduce((acc, val) => acc.concat(val), []);
평탄한 멀티 레벨 배열을 사용하려면
function flatDeep(arr, d = 1) {
return d > 0 ? arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatDeep(val, d - 1) : val), []) : arr.slice();
};
자세한 내용은 아래 링크도 확인하실 수 있습니다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
Aaron Beall의 대답은 훌륭하다.tsConfig에서 "lib"가 지정되지 않은 경우 알아두는 것이 좋습니다.JSON 파일 라이브러리의 기본 목록이 삽입됩니다.삽입되는 기본 라이브러리는 for --target ES5: DOM, ES5, ScriptHost for --target ES6: DOM, ES6, DOM 입니다.Itable, ScriptHost
즉, 다음과 같습니다.이전에 자동으로 추가된 libs를 지정해야 합니다.(자세한 내용은 https://www.typescriptlang.org/docs/handbook/compiler-options.html 참조)
"compilerOptions": {
"target": "es6",
"lib": [ "es2019", "DOM", "ES6" ,"DOM.Iterable", "ScriptHost"],}
나는 대부분의 답을 시도했지만 효과가 없었다.IDE: VS코드
근데 이게...
npm i -D @types/node
안정성을 기다리는 동안 글로벌 어레이 인터페이스를 확장할 수 있습니다. 그러면 기본 라이브러리에 추가됩니다.
interface Array<T> {
flat(): Array<T>;
flatMap(func: (x: T) => T): Array<T>;
}
typescript 3.9에 대한 angular 11과 thx의 시점에서는 이것이 새로운 설정입니다.
"compilerOptions": {
"target": "es2018",
"module": "es2020",
"lib": ["es2020", "dom"],
}
왜죠es2020
대신esnext
?
TypeScript 3.9에서는 모듈에 의해 제어되는 TypeScript 컴파일러의 동작은 esnext 값과 es2020 값 모두 동일합니다."esnext" 옵션이 이전과 호환되지 않는 방식으로 발전하여 TypeScript 업데이트 중에 빌드 시간 오류 또는 런타임 오류가 발생할 수 있기 때문에 이 동작은 나중에 변경될 수 있습니다.그 결과 코드가 불안정해질 수 있습니다."es2020" 옵션을 사용하면 이 위험을 줄일 수 있습니다.
이 때 '어울리다'를 붙일 도 있어요.esnext
es2019 합니다.
"compilerOptions": {
"target": "es2015",
"lib": ["dom", "esnext"]
}
그것은 나에게 효과가 있었다.
언급URL : https://stackoverflow.com/questions/53556409/flatmap-flat-flatten-doesnt-exist-on-type-any
'prosource' 카테고리의 다른 글
미디어 유형이 'text/plain'인 콘텐츠에서 'String' 유형의 개체를 읽는 데 사용할 수 있는 MediaTypeFormatter가 없습니다. (0) | 2023.03.29 |
---|---|
oracle 데이터베이스에 "&"와 같은 특수 문자를 입력하는 방법은 무엇입니까? (0) | 2023.03.29 |
MongoDB 문서에서 필드를 완전히 삭제하려면 어떻게 해야 합니까? (0) | 2023.03.29 |
React에서 객체 배열 정렬 및 렌더링 (0) | 2023.03.29 |
Jquery AJAX를 사용하여 HTML 양식 제출 (0) | 2023.03.29 |