繁体   English   中英

在TypeScript中使用多个泛型参数作为object键

[英]Use multiple generic parameters as object keys in TypeScript

有没有办法在 TypeScript 中使用多个通用参数作为 object 键?
当只有一个参数时,我在这里找到的答案工作正常,但当有更多参数时就不行了。 如果我尝试声明多个[key in T] ,则会出现错误“映射类型可能无法声明属性或方法”。

例如,我有一个 class:

export class DynamicForm<
    K0 extends string, V0,
    K1 extends string, V1,
    ...
> {
    public get value(): {
        [key in K0]: V0;
        [key in K1]: V1; // ERROR: A mapped type may not declare properties or methods. ts(7061)
        ...
    } {
        // returning value...
    }

    public constructor(
        input0?: InputBase<K0, V0>,
        input1?: InputBase<K1, V1>,
        ...
    ) {
        // doing stuff...
    }

}

基本上,我希望能够根据构造函数中给定的泛型类型返回一个类型化值。

我可以使用[key in ClassWithAllKeys] ,但我想我会失去K0 <=> V0K1 <=> V1等之间的连接。

您可以使用映射类型的交集:

public get value(): { [_ in K0]: V0 } & { [_ in K1]: V1 } {
    // returning value...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM