Реагируйте на Typescript, назначив local json для useState - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть файл data.json, который я импортирую, выполнив import * as data from './data/data.json';

в моей функции App, затем я делаю const [jobsObject, setJobsObject] = useState([]);

Чтобы добавить его в свое состояние , Я делаю

useEffect(() => {
        setJobsObject(data);
    }, []);

Я видел ту же самую работу кода в js. Я получаю Typescript Error, в котором написано Argument of type '({ "id": number; "company": string; [a lot of lines describing content of this object ommited for brevity] is not assignable to type 'never'.

У кого-нибудь есть идеи, как заставить его работать?

1 Ответ

1 голос
/ 23 апреля 2020

Самым простым решением для этого является утверждение, что любой тип data также является ожидаемым для jobsObject. Скажем, что const data: DataType где

type DataType = {
  id: number;
  company: string;
};

, тогда вы хотите присвоить

const [jobsObject, setJobsObject] = useState<DataType | undefined>(undefined);

Я добавил undefined из-за отсутствия дополнительной информации, и это разумный пример, когда вам не хватает исходное значение вашей переменной состояния. Я заметил, что вы предпочитаете определять его как массив, так как data здесь кажется объектом, это основная проблема, которую необходимо решить. Если на самом деле data является массивом объектов типа DataType, вы можете просто расширить определение типа на DataType[], сделав его массивом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...