Как: сделать тип Typescript состоящим из открытых членов другого типа?

#typescript #typescript-generics

Вопрос:

Использование машинописного текста 4.3.5

Есть идеи, как я могу указать тип, созданный из общедоступных членов/свойств другого? Считать:

 class Thing {
  public name: string
  private secret: string

  public greet(): string {}
  private curse(): string {}
}
 

Теперь я хотел бы определить этот тип:

 type PublicProps<Thing> = {
  name: string
  greet(): string
}
 

Как мне сделать это общим?

 type PublicProps<T> = ?
 

Комментарии:

1. Попробуй type PublicProps<T> = {[key in keyof T]: T[key]} . Это будет работать, потому что частная собственность не включена в keyof T

2. @AlexChashin, ты прав. Если хотите, опубликуйте это как ответ, и я его выберу.