mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-05 00:59:29 +08:00
27 lines
551 B
Text
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`
|
|
}
|