Object.values를 typescript와 함께 사용하는 방법
오브젝트에서 콤마로 구분된 문자열을 생성하려고 합니다.
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.values()
는 ES2017의 일부이며 컴파일 오류가 발생하는 것은 ES2017 라이브러리를 사용하도록 TS를 설정해야 하기 때문입니다.현재 TS 구성에서는 ES6 또는 ES5 라이브러리를 사용하고 있을 가능성이 있습니다.
솔루션: 사용es2017
또는es2017.object
컴파일러 옵션을 선택합니다.
예를 들어,tsconfig.json
:
"compilerOptions": {
"lib": ["es2017", "dom"]
}
TypeScript를 사용하여 ES2017을 대상으로 하는 것은 ES2017의 경우 브라우저에 폴리필을 방출하지 않습니다(위의 내용은 컴파일 오류를 해결하지만 브라우저가 ES2017을 구현하지 않기 때문에 런타임 오류가 발생할 수 있음).Object.values
프로젝트 코드의 폴리필은, 유저에게 달려 있습니다.또한 (이 글을 쓰는 시점에서는) 모든 브라우저에서 아직 제대로 지원되지 않기 때문에 반드시 polyfill:이 작업을 수행할 것입니다.
오브젝트를 사용합니다.키를 누릅니다.
const data = {
a: "first",
b: "second",
};
const values = Object.keys(data).map(key => data[key]);
const commaJoinedValues = values.join(",");
console.log(commaJoinedValues);
사용할 수 있습니다.Object.values
이렇게 함으로써 TypeScript에서(<any>Object).values(data)
어떤 이유로든 tsconfig에서 ES7로 업데이트 할 수 없는 경우.
타겟이 증가했습니다.tsconfig.json
TypeScript에서 이 기능을 활성화하려면
{
"compilerOptions": {
"target": "es2017",
......
}
}
대신
Object.values(myObject);
사용하다
Object["values"](myObject);
이 예에서는, 다음과 같이 합니다.
const values = Object["values"](data).map(x => x.substr(0, x.length - 4));
그러면 ts 컴파일러 오류가 표시되지 않습니다.
방금 전에 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)
.
같은 문제가 있는 경우는, 다음의 2개의 옵션이 있습니다.
(Object as any).values(myObject)
또는
/*tslint:disable:no-string-literal*/
`Object["values"](myObject)`
가장 간단한 방법은 캐스트를 하는 것입니다.Object
로.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);
그리고 voila – 컴파일 오류 없음;)
더욱 심플한 것은_.values
from underscore.discore https://underscorejs.org/ #valu
언급URL : https://stackoverflow.com/questions/42966362/how-to-use-object-values-with-typescript
'sourcetip' 카테고리의 다른 글
프로덕션 빌드의 Create-React-App 프록시 (0) | 2023.02.09 |
---|---|
Wordpress: WP_커스텀 투고 타입으로 검색 조건을 적용하는 방법을 문의합니다. (0) | 2023.02.09 |
Angular를 사용하여 URL에 검색 매개 변수를 추가하는 방법JS UI 라우터 .go()? (0) | 2023.02.09 |
Angular 어플리케이션에서의 메모리 누전 저감/제거 방법 (0) | 2023.02.09 |
스프링 부트를 사용한 json 출력의 날짜 형식 (0) | 2023.02.09 |