Массив строк, которые должны быть созданы из свойств типа | машинописного текста

#typescript #react-typescript

Вопрос:

У меня есть этот тип для формы реакции:

 type User = {
 fullName: string,
 username: string,
 email: string;
 password: string;
};
 

Чтобы отобразить некоторые ошибки, поступающие из API, мне нужно использовать эти значения для константы с именем «ключи».

 const keys = Object.keys(errorsFromApi);
 

При установке ошибок он указывает мне на следующую ошибку:

 Argument of type 'string' is not assignable to parameter of type '"fullName" | "username" | "email" | "password"'
 

Я быстро исправил клавиши ввода: (любые), но я хотел бы знать, как я могу это сделать правильно.

Большое спасибо за вашу помощь! 🙂

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

1. Как насчет const keys = Object.keys(errorsFromApi) as (keyof User)[]; этого ?

2. Это сработало! Спасибо 🙂

Ответ №1:

Object.keys Тип не очень строгий, поэтому я обычно определяю свою собственную keys функцию следующим образом:

 const keys = <T extends Record<PropertyKey, unknown>>(obj: T): Array<keyof T> => 
  Object.keys(obj)