首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在TypeScript中使用多个泛型参数作为对象键

在TypeScript中使用多个泛型参数作为对象键
EN

Stack Overflow用户
提问于 2022-04-12 15:13:58
回答 1查看 150关注 0票数 0

有没有一种方法可以在中使用多个泛型参数作为对象键?

当只有一个参数时,The answer I found here工作得很好,但当有更多参数时,就不能工作了。如果我尝试声明多个[key in T],“映射类型可能不会声明属性或方法”。

例如,我有一门课:

代码语言:javascript
运行
复制
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等之间的连接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-12 18:14:20

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

代码语言:javascript
运行
复制
public get value(): { [_ in K0]: V0 } & { [_ in K1]: V1 } {
    // returning value...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71845152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档