实现 Omit

·48 字 · 约 1 分钟#前端#TypeScript#type

不使用 Omit 实现 TypeScriptOmit<T, K> 泛型。

Omit 会创建一个省略 K 中字段的 T 对象。

例如:


interface Todo {
  title: string
  description: string
  completed: boolean
}

type TodoPreview = MyOmit<Todo, 'description' | 'title'>

const todo: TodoPreview = {
  completed: false,
}

解答#

interface Todo {
    title: string;
    description: string;
    completed: boolean;
}

type MyOmit<T, K extends keyof T> = {
    [P in keyof T as P extends K ? never : P]: T[P];
};

// @ts-expect-error
type error = MyOmit<Todo, "description" | "invalid">;

本文由 note.batype.com 导入。

相关文章