代码之家  ›  专栏  ›  技术社区  ›  Nurbol Alpysbayev

Typescript:将必需属性转换为可选属性

  •  0
  • Nurbol Alpysbayev  · 技术社区  · 6 年前

    如何将非可选属性转换为可选属性? 代码如下:

    interface Foo {
      bar: any // no '?', hence this prop is required
    }
    
    type KeysOfFoo = {
      [K in keyof Foo]: any
    }
    
    const keysOfFoo: KeysOfFoo = {} // No tsc error wanted here, got: "type '{}' is not assignable to type KeysOfFoo"
    
    0 回复  |  直到 6 年前
        1
  •  2
  •   Gaurav51289    4 年前

    这里只有一个变化,尽管它不适用于问题中的问题。这里的解决方案也保留了键的类型。。 阅读更多信息: https://www.typescriptlang.org/docs/handbook/advanced-types.html#index-types

    interface Foo {
      bar: any // no '?', hence this prop is required
    }
    
    type KeysOfFoo = {
      [K in keyof Foo]?: Foo[K] // so that it retains the types
    }