Typescript와 함께 Object.values를 사용하는 방법은 무엇입니까?
쉼표로 구분 된 문자열을 객체에서 형성하려고합니다.
const data = {"Ticket-1.pdf":"8e6e8255-a6e9-4626-9606-4cd255055f71.pdf","Ticket-2.pdf":"106c3613-d976-4331-ab0c-d581576e7ca1.pdf"};
const values = Object.values(data).map(x => x.substr(0, x.length - 4));
const commaJoinedValues = values.join(',');
console.log(commaJoinedValues);
TypeScript로이 작업을 수행하는 방법은 무엇입니까?
오류 파일 받기 :
severity: 'Error'
message: 'Property 'values' does not exist on type 'ObjectConstructor'.'
at: '216,27'
source: 'ts'
대신 Object.keys를 사용하십시오.
const data = {
a: "first",
b: "second",
};
const values = Object.keys(data).map(key => data[key]);
const commaJoinedValues = values.join(",");
console.log(commaJoinedValues);
Object.values()는 ES2017의 일부이며 ES2017 라이브러리를 사용하도록 TS를 구성해야하기 때문에 컴파일 오류가 발생합니다. 현재 TS 구성에서 ES6 또는 ES5 라이브러리를 사용 중일 수 있습니다.
솔루션 : es2017또는 컴파일러 옵션을 사용 es2017.object하십시오 .--lib
예를 들어, 사용 tsconfig.json:
"compilerOptions": {
"lib": ["es2017", "dom"]
}
TypeScript로 ES2017을 타겟팅하면 ES2017 의 브라우저에서 폴리 필이 생성 되지 않습니다 (위의 방법으로 컴파일 오류가 해결 되지만 브라우저가 ES2017을 구현하지 않기 때문에 여전히 런타임 오류 가 발생할 수 있음 Object.values), 프로젝트를 폴리 필해야합니다 원하는 경우 직접 코드를 작성하십시오. 그리고이 글을 쓰는 시점에서 Object.values모든 브라우저가 아직 잘 지원하지 않기 때문에 polyfill을 원합니다 : core-jswill do the job .
어떤 이유로 tsconfig에서 ES7로 업데이트 할 수없는 경우 Object.valuesTypeScript에서이를 수행 하여 사용할 수 있습니다 (<any>Object).values(data).
대신에
Object.values(myObject);
사용하다
Object["values"](myObject);
귀하의 예의 경우 :
const values = Object["values"](data).map(x => x.substr(0, x.length - 4));
이것은 ts 컴파일러 오류를 숨길 것입니다.
tsconfig.jsonTypeScript에서이 기능을 사용하도록 대상을 증가 시켰습니다.
{
"compilerOptions": {
"target": "es2017",
......
}
}
CLI와 작업 공간을 사용하여 Angular 6 에서이 정확한 문제에 부딪 쳤습니다 ng g library foo.
필자의 경우 문제는 섹션에 포함 tsconfig.lib.json되지 않은 라이브러리 폴더 es2017에 lib있습니다.
Angular 6 에서이 문제를 겪고있는 사람 tsconfig.lib.json은 응용 프로그램뿐만 아니라 사용자를 업데이트 해야합니다.tsconfig.json
나의 갖는 tslint항상 라인을 대체 여기 규칙 구성을 Object["values"](myObject)함께 Object.values(myObject).
동일한 문제가있는 경우 두 가지 옵션 :
(Object as any).values(myObject)
또는
/*tslint:disable:no-string-literal*/
`Object["values"](myObject)`
더 간단 _.values하고 underscore.js 에서 사용 https://underscorejs.org/#values
가장 간단한 방법은 다음과 같이 Objectto 를 캐스팅하는 any것입니다.
const data = {"Ticket-1.pdf":"8e6e8255-a6e9-4626-9606-4cd255055f71.pdf","Ticket-2.pdf":"106c3613-d976-4331-ab0c-d581576e7ca1.pdf"};
const obj = <any>Object;
const values = obj.values(data).map(x => x.substr(0, x.length - 4));
const commaJoinedValues = values.join(',');
console.log(commaJoinedValues);
And voila – no compilation errors ;)
참고URL : https://stackoverflow.com/questions/42966362/how-to-use-object-values-with-typescript
'IT story' 카테고리의 다른 글
| NSArray 딥 카피 (0) | 2020.07.18 |
|---|---|
| 크기 제한이있는 캐시 된 스레드 풀을 만들 수 없습니까? (0) | 2020.07.18 |
| Entity Framework 5에 자식 개체의 자식 개체를 포함시키는 방법 (0) | 2020.07.18 |
| bash에서 $ @에서 첫 번째 요소 제거 (0) | 2020.07.18 |
| 문자열의 주어진 색인에서 문자를 바꾸시겠습니까? (0) | 2020.07.18 |