Typescript 选择多个键

xip*_*per 9 javascript typescript

interface A{
  a:{
    name: string
  }
  b:{
    age: number
  }
}

type PickMultiple = ..... //todo

const child:PickMultiple<A,['a','b']> = {
   name: 'mike',
   age: 18
}

Run Code Online (Sandbox Code Playgroud)

如何提取多个密钥?它与Pick Child key

当然Pick<A, 'a'| 'b'> 不能按预期工作

小智 19

已经支持多键了

interface Todo {
  title: string;
  description: string;
  completed: boolean;
}
 
type TodoPreview = Pick<Todo, "title" | "completed">;
Run Code Online (Sandbox Code Playgroud)


xip*_*per 8

interface A {
  a: {
    name: string
  }
  b: {
    age: number
  }
}

type Picked<T, K extends keyof T> = T[K]

const a: Picked<A, 'a' | 'b'> = {
  name: '1',
  age: 18,
}
console.log(a)
Run Code Online (Sandbox Code Playgroud)

  • 这与我原来的答案有同样的问题,如果你省略了“name”或“age”,Typescript 会说它是有效的。 (2认同)