gpt4 book ai didi

通用 typescript 将下划线对象转换为驼峰式大小写

转载 作者:行者123 更新时间:2023-12-04 14:34:11 28 4
gpt4 key购买 nike

假设我有一个这样的界面

interface Example {
first_name: string,
last_name: string,
home_town: string,
}

我正在寻找一个像 Camelize 这样的泛型可以拿 Example并将所有键切换为有效,如果它们被 Camel 化而不是下划线。
const e: Camelize<Example> = {
firstName: 'string',
lastName: 'string',
homeTown: 'string'
}

这可能吗?

最佳答案

TypeScript 4.1 将在映射类型中引入模板文字类型和键扩充(请参阅 microsoft/TypeScript#40336 ),此时您可以通过以下方式实现:

type CamelizeString<T extends PropertyKey> = 
T extends string ? string extends T ? string :
T extends `${infer F}_${infer R}` ? `${F}${Capitalize<CamelizeString<R>>}` : T : T;

type Camelize<T> = { [K in keyof T as CamelizeString<K>]: T[K] }

type CamelizeExample = Camelize<Example>;
/* type CamelizeExample = {
firstName: string;
lastName: string;
homeTown: string;
} */

const e: Camelize<Example> = {
firstName: 'string',
lastName: 'string',
homeTown: 'string'
}
Playground link to code

关于通用 typescript 将下划线对象转换为驼峰式大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57807009/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com