Tìm kiếm trang web

typescript - Lọc một kiểu chỉ còn các thuộc tính không phải null của nó


với loại này

type HasOptionals = {
   name: string
   surname?: string
}

Có thể tạo một kiểu loại trừ bất kỳ thuộc tính tùy chọn nào không?

type example = OnlyRequired<HasOptionals> // { name: string }

Câu trả lời #1

Bạn có thể sử dụng một kiểu ánh xạ với việc ánh xạ lại khóa:

type OnlyRequired<T> = {
    [K in keyof T as undefined extends T[K] ? never : K]: T[K]
}

Bây giờ OnlyRequired<HasOptionals> thực sự là { name: string; }.

Bài viết liên quan