TypeScript의 ES7 Object.entries()가 작동하지 않음
ES7 코드를 TypeScript로 변환하는 데 문제가 있습니다.다음 코드:
const sizeByColor = {
red: 100,
green: 500,
};
for ( const [ color, size ] of Object.entries(sizeByColor) ) {
console.log(color);
console.log(size);
}
다음과 같은 오류가 표시됩니다.
TypeError: Object.entries is not a function
TypeScript v2.0.3
tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"noEmitOnError": true,
"outDir": "dist",
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"pretty": true,
"lib": [ "es2017" ],
},
"exclude": [
"node_modules"
],
"include": [
"./node_modules/@types/**/*.d.ts",
"./src/**/*.ts"
]
}
Trough 객체를 반복하고 싶습니다.Object.entries()
그래서 내부 정의를 할당했습니다."lib": [ "es2017" ]
하지만 여전히, 타자기는 제가 그것을 옮기는 것을 허락하지 않습니다.
글로벌 컴파일러는 있지만 로컬 컴파일러는 없을 때 당신의 문제를 재현할 수 있습니다../node_modules
.
나의 경우 컴파일러는 어떤 tsconfig.json 파일을 사용해야 하는지 알지 못합니다.특정 항목을 가리키기tsconfig.json
파일 도움말:
tsc --project ./tsconfig.json
나는 또한 추가했습니다.dom
lib에 대한 옵션, 왜냐하면es2017
콘솔을 인식하지 못합니다.
"lib": [
"es2017",
"dom"
]
라이브러리 집합에 ECMA스크립트 2017(ES8) 전체 집합을 포함하지 않으려면es2017.object
의 결심을 만족시키기 위해Object.entries
그리고 관련이 있습니다.
다음은 최소한의 작동 예입니다.
src/index.ts
const sizeByColor = {
red: 100,
green: 500,
};
for (const [color, size] of Object.entries(sizeByColor)) {
console.log(color);
console.log(size);
}
tsconfig.json
{
"compilerOptions": {
"lib": ["dom", "es2016", "es2017.object"],
"rootDir": "src",
"target": "es6",
"outDir": "dist"
},
"exclude": [
"node_modules"
]
}
참고: 만약"target"
으로 설정됨"es6"
TypeScript는 기본적으로 다음을 사용합니다."lib"
항목(지정되지 않은 경우): ["dom", "dom.iterable", "es6", "scripthost"]
.
설정 시 라이브러리 기본값을 덮어씁니다."lib"
수동으로, 그것이 제가 추가해야 했던 이유입니다."dom"
(사용할)console.log
내 코드에서는) 및"es6"
ES6 및 부분 ES8의 사용을 시연합니다("es2017.object"
).
원본: TypeScript 컴파일러 옵션
음, 주사 놓는 것을 잊어버린 것 같습니다.core-js
에 폴리필.Object.entries
.수입품'core-js/fn/object/entries';
이 폴리필 변환은 효과가 있지만 IDE는 여전히 이에 대해 불평하고 있습니다.포함할 때@types/core-js
직접적으로 IDE는 괜찮지만 "lib/es2017"의 중복 선언으로 인해 Typescript가 충돌합니다.IDE(WebStorm)가 내부의 "lib" 설정을 처리할 수 없는 것 같습니다.tsconfig.json
편집: 예, 저는 웹스톰 설정을 수정하려고 시도했고, "TypeScript 서비스(실험) 사용"을 true로 설정한 후 모든 것이 정상입니다!
이것은 저에게 효과가 있었습니다. 물론 여기서 원하는 인터페이스/유형을 변경할 수 있습니다.
for (const [field, values] of Object.entries<any>(filters)) {
독립 실행형 Typescript 앱의 경우 lib를 추가해야 했습니다.es2019.object
tsconfig로 이동하고 폴리필을 가져와 작동합니다 :)
import 'core-js/es/object/from-entries';
언급URL : https://stackoverflow.com/questions/39741428/es7-object-entries-in-typescript-not-working
'programing' 카테고리의 다른 글
Git 내역에서 특정 수정본을 제거하는 방법은 무엇입니까? (0) | 2023.06.19 |
---|---|
크기 대 스트렐렌 (0) | 2023.06.19 |
Spring을 위한 Oracle 데이터 소스 구성 (0) | 2023.06.19 |
R은 어디에 패키지를 저장합니까? (0) | 2023.06.19 |
해시에서 키와 값을 교환하는 방법 (0) | 2023.06.19 |