Skip to main content
Module

x/scaffold/src/deps/types.ts>DelimiterCasedPropertiesDeep

scaffold your next project with style and 💗
Latest
type alias DelimiterCasedPropertiesDeep
import { type DelimiterCasedPropertiesDeep } from "https://deno.land/x/scaffold@0.3.0/src/deps/types.ts";

Convert object properties to delimiter case recursively.

This can be useful when, for example, converting some API types from a different style.

Examples

Example 1

import type {DelimiterCasedPropertiesDeep} from 'type-fest';

interface User {
	userId: number;
	userName: string;
}

interface UserWithFriends {
	userInfo: User;
	userFriends: User[];
}

const result: DelimiterCasedPropertiesDeep<UserWithFriends, '-'> = {
	'user-info': {
	'user-id': 1,
		'user-name': 'Tom',
	},
	'user-friends': [
		{
			'user-id': 2,
			'user-name': 'Jerry',
		},
		{
			'user-id': 3,
			'user-name': 'Spike',
		},
	],
};

Type Parameters

Value
Delimiter extends string
definition: Value extends Function | Date | RegExp ? Value : Value extends Array<infer U> ? Array<DelimiterCasedPropertiesDeep<U, Delimiter>> : Value extends Set<infer U> ? Set<DelimiterCasedPropertiesDeep<U, Delimiter>> : [K in keyof Valuein keyof DelimiterCase<K, Delimiter>]: DelimiterCasedPropertiesDeep<Value[K], Delimiter>