タイプスクリプトタイプエラーの変更-as any


setToDos((oldToDos) => {
      const targetIndex = oldToDos.findIndex((toDo) => toDo.id === id);
      //const oldToDo = oldToDos[targetIndex];
      const newToDo = { text, id, category: name };
      return [
        ...oldToDos.slice(0, targetIndex),
        newToDo,
        ...oldToDos.slice(targetIndex + 1),
      ];
    });
既存のtodoListでcategory属性のみを変更する論理を作成中にoldToDosエラーが発生しました.
 (parameter) oldToDos: IToDo[]
setToDos((oldToDos) => {
   const targetIndex = oldToDos.findIndex((toDo) => toDo.id === id);
   //const oldToDo = oldToDos[targetIndex];
   const newToDo = { text, id, category: name };
   return [
     ...oldToDos.slice(0, targetIndex),
     newToDo,
     ...oldToDos.slice(targetIndex + 1),
   ];
Argument of type '(oldToDos: IToDo[]) => { text: string; id: number; category: string; }[]' is not assignable to parameter of type 'IToDo[] | ((currVal: IToDo[]) => IToDo[])'.
  Type '(oldToDos: IToDo[]) => { text: string; id: number; category: string; }[]' is not assignable to type '(currVal: IToDo[]) => IToDo[]'.
    Type '{ text: string; id: number; category: string; }[]' is not assignable to type 'IToDo[]'.
      Type '{ text: string; id: number; category: string; }' is not assignable to type 'IToDo'.
        Types of property 'category' are incompatible.
          Type 'string' is not assignable to type '"TO_DO" | "DOING" | "DONE"'.ts(2345)
No quick fixes available
授業中です.
const newToDo = { text, id, category: name };
anyプロパティを追加して解決します.
const newToDo = { text, id, category: name as any};
{ text: string; id: number; category: string; }IToDoタイプに合わない理由は
export interface IToDo {
  text: string;
  id: number;
  category: 'TO_DO' | 'DOING' | 'DONE';
}
これは、categoryに「TO DO」|「DOING」|「DONE」属性があるためかもしれません.
だからasanyで属性を強制的に変更し、エラーを解消しました.
anyはTSの出口で、タイプシステムの制限から抜け出したい場合はanyを使用できます.
anyを使用すると、タイプの安定性を犠牲にするのではなく、元のJSに近いコードを作成できます.
anyは「タイプワイルドカード」のように、任意のタイプを他のタイプに割り当てることができます.
https://www.typescriptlang.org/ko/play#example/any
JSとは異なり、これは変数のタイプが特定され、自由すぎるJSに適切な制限が設定されているために発生したエラーの可能性があります.TSに入ってからもっと気になって、これからもTSを勉強したいです.