Skip to content

option for skip array | tupple | optional keys in paths.d.ts #1303

@salisbury-espinosa

Description

@salisbury-espinosa

https://github.com/sindresorhus/type-fest/blob/main/source/paths.d.ts
=>
new 2 option for type PathsOptions

/**
	Skip in paths array elements

	@default false

	  @example
	  ```
	  import type {Paths} from 'type-fest';
	  
	  type Project = {
	  	filename: string;
	  	listA: string[];
	  	listB: [{filename: string}];
	  	folder: {
	  		subfolder: {
	  			filename: string;
	  		};
	  	};
	  };
	  
	  type ProjectPaths = Paths<Project, {skipArray: true}>;
	  //=> 'filename' | 'listA' | 'listB' | 'folder' | 'listB.0' | 'listB.0.filename' | 'folder.subfolder' | 'folder.subfolder.filename'
	 
	*/

	skipArray?: boolean;

/**
	Skip in paths tuple elements

	@default false

	  @example
	  ```
	  import type {Paths} from 'type-fest';
	  
	  type Project = {
	  	filename: string;
	  	listA: string[];
	  	listB: [{filename: string}];
	  	folder: {
	  		subfolder: {
	  			filename: string;
	  		};
	  	};
	  };
	  
	  type ProjectPaths = Paths<Project, {skipTuple: true}>;
	  //=> 'filename' | 'listA' | 'listB' | 'folder' | `listA.${number}` | 'folder.subfolder' | 'folder.subfolder.filename' 

	*/
	skipTuple?: boolean;


/**
	Skip in paths tuple elements

	@default false

	  @example
	  ```
	  import type {Paths} from 'type-fest';
	  
	  type Project = {
	  	filename: string;
	  	size?: number;
	  	folder: {
	  	        name: string;
	  		subfolder?: {
	  			filename: string;
	  		};
	  	};
	  };
	  
	  type ProjectPaths = Paths<Project, {skipOptional: true}>;
	  //=> 'filename' | 'folder.name'

	*/
	skipOptional?: boolean;

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions