sindresorhus/type-fest

`Proposal`: add option with exclude/keep specified type on deep type

開放

#862 建立於 2024年4月12日

 (5 則留言) (0 個反應) (1 位負責人)TypeScript (471 個分叉)batch import
help wantedtype addition

倉庫指標

星標
 (12,328 顆星)
PR 合併指標
 (平均合併 3天 5小時) (30 天內合併 11 個 PR)

描述

Look at this scene

I have a type Item that wrapped with some util type, and I want get a simplify Item, like:

import type { SimplifyDeep } from 'type-fest/source/merge-deep'

type SimplifyItem = SimplifyDeep<Item>
// => expect type SimplifyItem = { name: string, color: THREE.Color }

but actual rsult is:

import type { SimplifyDeep } from 'type-fest/source/merge-deep'

type SimplifyItem = SimplifyDeep<Item>
/**
type SimplifyItem = { 
    name: string,
    color: {
            readonly isColor: true;
            r: number;
            g: number;
            b: number;
            set: (color: string | number | Color) => Color;
            ... 31 more ...;
            toArray: {
                ...;
            };
        };
}
*/

so maybe we can add a exclude type option ( or named keep ) on Deep type like:

import type { SimplifyDeep } from 'type-fest/source/merge-deep'

type SimplifyItem = SimplifyDeep<Item, { exclude: THREE.Color }>
// => expect type SimplifyItem = { name: string, color: THREE.Color }

It can also resolve scene conflicts between users, such as one want recursive into HTMLElemet, anther one want keep HTMLElemet

Related comment: https://github.com/sindresorhus/type-fest/issues/651#issuecomment-1803324362 Related issue: #651

貢獻者指南