Urara-Blog/node_modules/.pnpm-store/v3/files/41/1054d57b161e21ec9f2e70bde5c8ce6f1ee86ad7d7605a374efbbe57caa42f711bc075e28503045c8506f3a865428b2869eee1b45a52e046abdf88cbb9a77e
2022-08-14 01:14:53 +08:00

27 lines
551 B
Text

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`
}