Skip to content

StrictExclude<BaseType, ExcludedMembers>

개요

이 타입은 TypeScript의 Exclude 유틸리티 타입의 더 엄격한 버전이에요.

Exclude는 주어진 타입에 없는 멤버도 제외할 수 있지만, StrictExclude는 오직 실제로 타입에 존재하는 멤버만 제외할 수 있도록 보장해요.

문법

ts
type StrictExclude<BaseType, ExcludedMembers extends BaseType> = Exclude<
  BaseType,
  ExcludedMembers
>;
  • BaseType: 유니온 멤버를 제외하고자 하는 기존 타입이에요.
  • ExcludedMembers: BaseType에서 제외하려는 유니온 멤버 혹은 타입이에요.

예제

예제 #1

ts
type Example = 'admin' | 'editor' | 'viewer';
type StrictExcludedExample = StrictExclude<Example, 'admin'>;
// Result: "editor" | "viewer"

TIP

If your team is using ESLint and wants to enforce the use of StrictExclude instead of the standard Exclude, you can configure ESLint to help catch this. The @typescript-eslint/ban-types rule can be configured to display an error message when Exclude is used, guiding developers to use StrictExclude instead. Here's how you can set up your ESLint configuration:

js
module.exports = {
  parser: '@typescript-eslint/parser',
  plugins: ['@typescript-eslint'],
  rules: {
    // Include other relevant rules here
    '@typescript-eslint/ban-types': [
      'error',
      {
        types: {
          Exclude: 'Use StrictExclude instead',
        },
        extendsDefaults: true,
      },
    ],
  },
};