我有以下对象:
const foo = {
fieldAnt: "foo",
fieldCab: "baz"
};
Run Code Online (Sandbox Code Playgroud)
我想自动将其映射到键为大写并带下划线的类型:
type FIELDS = {
FIELD_ANT: "fieldAnt",
FIELD_CAB: "fieldCab"
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用keyof打字稿或类型映射以编程方式实现此目的?
有点晚了:P但是,在一点帮助下我能够做到这一点:
const foo = {
fieldAnt: "foo",
fieldCab: "baz"
};
type CamelToSnakeCase<S extends string> =
S extends `${infer T}${infer U}` ?
`${T extends Capitalize<T> ? "_" : ""}${Lowercase<T>}${CamelToSnakeCase<U>}` :
S
type Convert<T> = { [P in keyof T as Uppercase<CamelToSnakeCase<string & P>>]: P }
type Fields = Convert<typeof foo>
// type Fields = {
// FIELD_ANT: "fieldAnt",
// FIELD_CAB: "fieldCab"
// }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3009 次 |
| 最近记录: |