[Typescript] 객체의 특정 속성 유형을 덮어쓰는 유형 함수 만들기
1828 단어 JavaScriptNode.jsTypeScripttech
성과물
/**
* 特定のプロパティを上書きする型関数
* Overwrite<Type, OverwritingType>
*/
export type Overwrite<T, U extends { [Key in keyof T]?: unknown }> = Omit<
T,
keyof U
> & U;
너 뭐 하고 싶어?
type Person = {
firstName: string;
lastName: string;
age: string;
};
예를 들어 상기 대상이 존재하면 age
유형 함수를 만들고 속성을 string
에서 number
로 쉽게 안전하게 바꿀 수 있는 유형 함수를 만들고 싶다.※ 단, 속성의 덮어쓰기는 혼란을 초래할 수 있으므로 이번 예시에서 보듯이 다시 설계해야 합니다.
우리의 경우 ORM에서 Prism을 사용하여 Json 데이터를 얻었을 때
any
형으로 바뀌었다.그때 나는 단지 json 데이터를 우리가 만든 유형에 덮어쓰고 싶었다.형식 함수를 사용하지 않는 덮어쓰기 방법
type Person = {
firstName: string;
lastName: string;
age: string;
};
type NewPerson = Omit<Person, "age"> & { // ①
age: string; // ②
};
문제점
유형 함수를 사용하는 경우
/**
* 特定のプロパティを上書きする型関数
*/
export type Overwrite<T, U extends { [Key in keyof T]?: unknown }> = Omit<
T,
keyof U
> & U;
type Person = {
firstName: string;
lastName: string;
age: string;
};
type NewPerson = Overwrite<Person, {age: number;}>
어때요? Overwrite를 사용하면 특정 속성만 안전하게 덮어쓸 수 있을 것 같아요.예를 들어 타자
age
에도 오류가 발생할 수 있다.간편한 Overwrite 설치
끝맺다
살펴봤는데 이 간단한 형 함수가 어디에도 없어서 제작해서 공개했어요.
장면을 활용하는 데는 한계가 있지만 도움이 된다면👋
Reference
이 문제에 관하여([Typescript] 객체의 특정 속성 유형을 덮어쓰는 유형 함수 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ibaragi/articles/85a719a5763e99텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)