具有另一个接口键的Typescript创建接口

时间:2020-06-29 10:09:46

标签: typescript

interface A{
    x: string;
    y: string;
    z: string;
    // maybe later something more
}
interface B{
    [K in keyof A]: Boolean;
}

为什么不起作用?我想创建类似的东西,但是要动态:

interface B{
    x: Boolean;
    y: Boolean;
    z: Boolean;
    // maybe later something more
}

2 个答案:

答案 0 :(得分:1)

尝试以下操作:

interface A{
    x: string;
    y: string;
    z: string;
    // maybe later something more
}


type Bar = {
  [key in keyof A]: boolean
}

interface B extends Bar { }

答案 1 :(得分:1)

请勿使用Boolean,请使用boolean

映射类型也仅适用于type而不适用于interface,两者之间几乎没有什么区别,因此应该可以使用

type Bar = {
  [key in keyof A]: boolean
}

此外,可以使用重新定义的映射类型Record来编写此映射类型:

type Bar = Record<keyof A, boolean>