본문 바로가기
IT/typescript

[typescript] -? 의미

by 내일은교양왕 2024. 12. 5.

 

아래의 코드에서 `-?` 는 무슨 의미인지 알아보자

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