我需要根据接口的另一个键的值创建动态键。
例如:
export interface IForm {
form_control: string;
based on the value of the form_control: string;
}
const form: IForm = {
form_control: 'name',
name: 'sample'
}
我只想通过接口来做到这一点,并且我不想创建类来实现这一点。 有什么办法吗?
答案 0 :(得分:2)
您将要为IForm
使用generic类型以表示约束。这是一种实现方法:
export type IForm<K extends string> = { form_control: K } & Record<K, string>;
使用内置的Record<K, V>
类型,表示具有K
键和值V
的类型。
然后,要声明类型IForm<K>
的变量而不必手动指定K
的值,可以通过创建如下的辅助函数来使用类型实参推断:
const asIForm = <K extends string>(iForm: IForm<K>) => iForm;
并像这样使用它:
const form = asIForm({
form_control: 'name',
name: 'sample'
}); // inferred as type IForm<"name">
希望有帮助。祝你好运!