아래의 코드에서 `-?` 는 무슨 의미인지 알아보자
type Required<T> = {
[P in keyof T]-?: T[P];
}
의미
TypeScript에서 -?는 옵셔널 속성을 제거하는 데 사용되는 문법
`?`는 Mapped Types에서 사용되며, ? (옵셔널 속성 표시)를 제거해 해당 속성을 반드시 포함해야 하는 속성 (Required)으로 변환합니다. 이를 통해 옵셔널 속성을 강제적으로 필수 속성으로 바꿀 수 있습니다.
Example
type Test = {
a?: string; // optional
b: number; // required
};
type RequiredTest = {
[P in keyof Test]-?: Test[P];
};
위 코드를 자세히 보면:
- Test 타입의 a는 옵셔널 속성입니다 (a?: string).
- RequiredTest 타입은 Mapped Types를 사용하여 모든 속성에서 ?를 제거합니다.
- ?가 a?: string을 a: string으로 바꿉니다.
- b는 이미 필수 속성이므로 변화가 없습니다.
결과적으로 RequiredTest 타입은 다음과 같이 됩니다
type RequiredTest = {
a: string; // no longer optional
b: number;
};
'IT > typescript' 카테고리의 다른 글
[typescript] WeakRef (0) | 2024.12.28 |
---|---|
[typescript] AtLeastOneRequired (0) | 2024.12.16 |
[typescript] fattenObject 함수 type 만들기 (0) | 2024.08.21 |
[typescript] infer (0) | 2024.08.14 |
[typescript] 함수타입(Function Type) 인자형 (0) | 2024.08.14 |