TypeScript 필수 유형의 작동 방식

TypeScript에서는 원래 유형이 속성 중 일부를 선택 사항으로 정의한 경우에도 객체에 필수 속성이 있는지 확인해야 하는 경우가 있습니다. 이를 위해 TypeScript에는 Required 라는 유틸리티 유형이 있습니다. 어떻게 작동하는지 살펴보겠습니다.

TypeScript 필수 유틸리티 유형



기본적으로 TypeScript에서 새 유형을 정의하면 해당 유형 내의 모든 필드가 자동으로 필수입니다.

type User = {
    firstName: string,
    lastName: string
}

let firstUser:User = {
    firstName: "John"
}


위에서 firstUserUser 유형이지만 lastName 누락되었습니다. 따라서 이 코드는 오류를 반환합니다.

Property 'lastName' is missing in type '{ firstName: string; }' but required in type 'User'.


필드가 선택적일 것으로 예상되는 경우 유형 정의에서 필드 끝에 물음표를 추가할 수 있습니다. 아래에서는 대신 lastName?를 작성하여 lastName을 선택 사항으로 만듭니다.

type User = {
    firstName: string,
    lastName?: string
}

let firstUser:User = {
    firstName: "John"
}


따라서 이 코드는 오류를 발생시키지 않습니다. lastName은 선택 사항이므로 firstUser에 포함하지 않는 것이 좋습니다.

TypeScript에서 선택적 유형을 필수로 지정
경우에 따라 대부분의 경우 lastName이 선택 사항이지만 일부 상황에서는 무언가를 수행해야 하는 경우가 있습니다. 이러한 경우 필수 유틸리티 유형을 사용할 수 있습니다. 예를 들어 lastName이 필수 항목이 되도록 하려면 원래 선택 사항으로 정의되었더라도 다음과 같이 작성할 수 있습니다.

type User = {
    firstName: string,
    lastName?: string
}

let firstUser:User = {
    firstName: "John",
}

let secondUser:Required<User> = {
    firstName: "John"
}


이 예에서 secondUser는 오류를 발생시킵니다.

Property 'lastName' is missing in type '{ firstName: string; }' but required in type 'Required<User>'


따라서 Required 를 사용했기 때문에 오류를 피하기 위해 lastName 를 추가해야 합니다.

type User = {
    firstName: string,
    lastName?: string
}

let secondUser:Required<User> = {
    firstName: "John",
    lastName: "Doe"
}


이를 통해 더 많은 유연성을 제공하는 동시에 애플리케이션의 특정 기능에 대한 필드 요구 사항을 적용할 수 있습니다. 다른 유틸리티 유형과 마찬가지로 Required는 위에서 정의한 User 유형과 같은 인터페이스 또는 객체 유형과 함께 작동하기 위한 것입니다. 따라서 변수와 함께 작동하지 않습니다. 하지만 변수는 어쨌든 빈 값을 가질 수 없기 때문에 별로 중요하지 않습니다.

좋은 웹페이지 즐겨찾기