Closed Stilllee closed 9 months ago
제네릭을 사용한 type Identity가 문맥상 필수 요소로 보이지 않아 다음과 같이 수정했습니다.
type Status = "ACTIVE" | "INACTIVE" | "PENDING";
interface User {
getStatus: () => Status;
}
const user: User = {
getStatus: () => "ACTIVE"
};
Identity<T>
는 T
를 그대로 반환하기만 하고 있어 제네릭이 불필요합니다. Identity<T>
를 제거하고, getStatus
가 직접 Status
를 반환하도록 수정할 수 있습니다.
type Status = "ACTIVE" | "INACTIVE" | "PENDING";
interface User {
getStatus: () => Status;
}
const user: User = {
getStatus: () => "ACTIVE"
};
선언된 Identity
제네릭은 타입을 그대로 반환하는 역할을 하고 있습니다.
Identity
가 사용되고 있는 getStatus
은 단순히 Status
타입의 값을 반환하는 것이기 때문에 굳이 Identity
를 사용하는 의미가 없어 제거 가능합니다.
아래와 같이 코드를 개선시킬 수 있습니다.
type Status = "ACTIVE" | "INACTIVE" | "PENDING";
interface User {
getStatus: () => Status;
}
const user: User = {
getStatus: () => "ACTIVE"
};
이 코드에서 Identity
라는 타입은 단순히 제네릭 매개변수 T
를 그대로 반환하고 있습니다.
User
인터페이스의 getStatus
메서드에서 Identity<Status>
를 반환타입으로 사용할 필요없이 직접 Status
의 타입을 사용하는것이 더 간결하고 명확합니다.
따라서 다음과 같이 코드를 수정할 수 있습니다.
type Status = "ACTIVE" | "INACTIVE" | "PENDING";
interface User {
getStatus: () => Status;
}
const user: User = {
getStatus: () => "ACTIVE"
};
이렇게 수정하면 코드가 더 이해하기 쉽고 간결해지며, Status
타입의 목적과 사용이 명확해지므로 협업 시에도 실수를 줄일 수 있습니다.
📝 117p
❓ 타입스크립트에서 제네릭이 필요하지 않을 때에도 무분별하게 사용할 경우 코드의 길이만 늘어나고 가독성을 해칠 수 있습니다.
아래의 코드에서 불필요한 부분을 찾아내 코드를 개선해보세요.