Javascript 如何使用动态键创建TS接口?
Javascript 如何使用动态键创建TS接口?,javascript,typescript,dynamic,interface,Javascript,Typescript,Dynamic,Interface,keyArray=[key1,key2,key3,…]//这是动态值数组。 我想使用keyArray创建如下的TS接口 interface = { key1 : string; key2 : string; key3 : string; ... } 我如何才能做到这一点?很难做到这一点,因为这取决于变量key1等的键入方式 我们可以使用(typeof keyArray)[number]获取keyArray的值的类型,我们可以创建一个类型,将这些类型作为键,将字符串作为值: ty
keyArray=[key1,key2,key3,…]//这是动态值数组。
我想使用keyArray创建如下的TS接口
interface = {
key1 : string;
key2 : string;
key3 : string;
...
}
我如何才能做到这一点?很难做到这一点,因为这取决于变量
key1
等的键入方式
我们可以使用(typeof keyArray)[number]
获取keyArray
的值的类型,我们可以创建一个类型,将这些类型作为键,将字符串作为值:
type FromKeys = Record<(typeof keyArray)[number], string>
不清楚您的意思-类型只在编译时存在,它们被运行时删除(因为JavaScript不是类型化的)。
type FromKeys<T extends readonly PropertyKey[]> = Record<T[number], string>
declare function makeObject<T extends readonly PropertyKey[]>(keyArray: T): FromKeys<T>;
const obj1 = makeObject(["a", "b", "c"]); // Record<string, string>
const obj2 = makeObject(["a", "b", "c"] as const); // Record<"a" | "b" | "c", string>