ts-dynamodb-attributes-transformer: DynamoDB 속성에 대한 TypeScript 객체의 코드 변환기
8209 단어 dynamodbtypescript
Record<string, AttributeValue>
입니다).https://github.com/moznion/ts-dynamodb-attributes-transformer
그리고 이것은 npm에서도 사용할 수 있습니다.
https://www.npmjs.com/package/@moznion/ts-dynamodb-attributes-transformer
ts-dynamodb-attributes-transformer는 TypeScript Compiler API을 사용하는 코드 변환기 플러그인입니다.
이 변압기가 어떻게 작동하는지 봅시다.
이 변환기에 다음 TypeScript 코드를 제공하면,
import { AttributeValue } from '@aws-sdk/client-dynamodb';
import { dynamodbRecord } from '@moznion/ts-dynamodb-attributes-transformer';
interface User {
readonly id: number;
readonly name: string;
readonly tags: Map<string, string>;
}
const record: Record<keyof User, AttributeValue> = dynamodbRecord<User>({
id: 12345,
name: 'John Doe',
tags: new Map<string, string>([
['foo', 'bar'],
['buz', 'qux'],
]),
});
이 변환기는
dynamodbRecord<T>(obj: T)
(이 경우 dynamodbRecord<User>(...)
) 함수 호출을 감지하고 유형 매개변수T
(이 경우 User
)의 필드 정의를 분석하고 다음에 따라 다음과 같은 JavaScript 코드를 생성합니다. 매개변수로 주어진 T 유형 객체.const record = function (arg) {
return {
id: {
N: arg.id.toString()
},
name: {
S: arg.name
},
tags: {
M: function () {
var m;
m = {}
for (const kv of arg.tags) {
m[kv[0]] = { S: kv[1] }
}
return m;
}()
}
};
}({
id: 12345,
name: 'John Doe',
tags: new Map([
['foo', 'bar'],
['buz', 'qux'],
]),
});
이 동작은 호출
dynamodbRecord<T>(obj: T)
을 DynamoDB 속성에 대한 생성기 함수로 완전히 대체하는 것과 같습니다.위에서 언급했듯이 이것은 TypeScript 변환기 플러그인이므로 TypeScript 컴파일 단계에서 이 플러그인을 연결해야 합니다. 가장 쉬운 방법 중 하나는 ttypescript을 사용하는 것이라고 가정합니다. 이는 컴파일에서 변환기 플러그인을 연결할 수 있는 사용자 지정 TypeScript 컴파일러입니다. README의 "How to use this transformer" 섹션도 참조하십시오.
당연히 이 플러그인은 해당 객체의 유형 정의에 따라 대상 객체를 DynamoDB 속성으로 변환할 수 있습니다. 그리고 이것은 TypeScript Compiler API를 사용하여 코드를 변환하므로 컴파일 시 정적으로 생성할 코드를 결정할 수 있으므로 DynamoDB 속성 객체를 구성하기 위해 즉석에서 리플렉션이나 무언가를 수행할 필요가 없습니다. 이것은 좋은 성능에 기여합니다.
현재 이 플러그인은 내 사용 사례를 만족하지만 개선 아이디어가 있거나 문제를 발견하면 제안해 주시면 감사하겠습니다!
Reference
이 문제에 관하여(ts-dynamodb-attributes-transformer: DynamoDB 속성에 대한 TypeScript 객체의 코드 변환기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/moznion/ts-dynamodb-attributes-transformer-a-code-transformer-of-typescript-object-to-dynamodb-attributes-o7e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)