タイプスクリプトタイプエラーの変更-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を勉強したいです.
Reference
この問題について(タイプスクリプトタイプエラーの変更-as any), 我々は、より多くの情報をここで見つけました https://velog.io/@daily_d/TypeScript-타입-오류テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol