Вы можете использовать $Keys
тип утилиты , который будет извлекать все ключи из типа и создавать их объединение.
type Product = {
id: number,
name: string;
}
const foo: $Keys<Product> = 'id' // works
const bar: $Keys<Product> = 'name' // works
const baz: $Keys<Product> = 'someField' // FAIL!
См. Живой пример
В действительности $Keys<Product>
совпадает с "id" | "name"
, но динамически рассчитывается на основе свойств, присутствующих в Product
, Вы также можете извлечь тип, если хотите многократно использовать его:
type ValidKey = $Keys<Product>
const foo: ValidKey = "id"