跳到主要内容

Omit

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

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

例如:

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

type TodoPreview = MyOmit<Todo, "description" | "title">;

const todo: TodoPreview = {
completed: false,
};

答案

Details
type MyOmit<T, K> = {
[Property in keyof T as Property extends K ? never : Property]: T[Property]
}
信息

这个应该没什么好讲的,never 作为 TS 的 Bottom Type 在类型映射中根据条件可以排除某些特定的属性