sourcetip

Object.values를 typescript와 함께 사용하는 방법

fileupload 2023. 2. 9. 22:26
반응형

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.jsonTypeScript에서 이 기능을 활성화하려면

{
    "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 – 컴파일 오류 없음;)

더욱 심플한 것은_.valuesfrom underscore.discore https://underscorejs.org/ #valu

언급URL : https://stackoverflow.com/questions/42966362/how-to-use-object-values-with-typescript

반응형