12345678910111213141516171819202122232425262728 |
- export function union(types) {
- return [...new Set(types)].join(' | ')
- }
- export function unionValues(values) {
- return union(values.map(forValue))
- }
- export function forKeys(value) {
- return union(Object.keys(value).map((key) => `'${key}'`))
- }
- export function forValue(value) {
- if (Array.isArray(value)) {
- return `(${unionValues(value)})[]`
- }
- if (typeof value === 'object') {
- return `Record<${forKeys(value)}, ${unionValues(Object.values(value))}>`
- }
- if (typeof value === 'string') {
- return `string`
- }
- return `any`
- }
|