반응형

🚫 Pick 사용시 Type ~ does not satisfy the constraint

type Colors = 'white' | 'gray' | 'black' | 'red' | 'orange' | 'blue' | 'purple' | 'green';

type BadgeColors = Pick<Colors, 'black' | 'green' | 'blue' | 'red' | 'orange'>; // Error

특정 컬러 타입을 지정하고 거기서 필요한 타입만 뽑아서 새로운 타입들을 지정하기위해 코드를 작성하였는데, Type "black" does not satisfy the constraint와 같은 에러메시지를 만났다.


Pick을 사용하게 된 경우 타입자체가 반환되는게 아니라 객체 형태가 리턴되는것을 알 수 있다.

아래와 같이 코드를 변경하였다.

type Colors = 'white' | 'gray' | 'black' | 'red' | 'orange' | 'blue' | 'purple' | 'green';

type BadgeColors = Exclude<Colors, 'white' | 'gray' | 'purple'>; // Ok

Exclude<T, U>는 타입에서 특정 요소를 제외 시켜주는데, T에서 사용되는 요소 중 U에 해당하는 것을 제외시켜줍니다.

Exclude를 사용하게되면 타입으로 반환이 되기때문에 타입에러 없이 사용할 수 있습니다.

반응형