반응형
속성 'id'가 'T' 유형에 없습니다. (2339) 유형 스크립트 Generics 스크립트 Generics 오류
라는 기능이 있습니다.updateArrayOfObjects
그러면 어레이의 개체가 업데이트됩니다.아래와 같이 이 함수에 제네릭 유형을 전달합니다.
interface OtherIncomeSource {
id?: string;
incomeDescription?: string;
amount?: number;
}
const otherIncomes = [
{
id: "#6523-3244-3423-4343",
incomeDescription: "Rent",
amount: 100
},
{
id: "#6523-3244-3423-4343",
incomeDescription: "Commercial",
amount: undefined
}
]
const updateArrayOfObjects = <T>(arrayOfObjects: T[], newObject: T, deleteObject: boolean = false): T[] => {
const newArrayOfObjects = arrayOfObjects.slice();
let index = newArrayOfObjects.findIndex((obj: T) => obj.id === newObject.id)
if(deleteObject) {
newArrayOfObjects.splice(index, 1);
} else {
if (index === -1) {
newArrayOfObjects.push(newObject);
} else {
newArrayOfObjects[index] = newObject;
}
}
return newArrayOfObjects
}
const newData = updateArrayOfObjects<OtherIncomeSource>(otherIncomes, {id: '1233', incomeDescription: 'agri', amount: 5000})
에 액세스할 때 아래에 언급된 라인에서 오류가 발생합니다.id
"'ID' 속성이 'T' 유형에 존재하지 않습니다. (2339)"라고 말합니다.
let index = newArrayOfObjects.findIndex((obj: T) => obj.id === newObject.id)
아래는 이 문제의 전체 환경을 위한 유형 스크립트 놀이터 링크이며, 여기서 오류는 빨간색으로 강조 표시됩니다. 유형 스크립트 놀이터의 예
다음과 같이 제네릭 유형에 대한 제약 조건을 제공해야 합니다.<T extends { id?: string }>
라인 업데이트const updateArrayOfObjects = <T>(arrayOfObjects: T[], newObject: T, deleteObject: boolean = false): T[] => {
로.const updateArrayOfObjects = <T extends { id?: string }>(arrayOfObjects: T[], newObject: T, deleteObject: boolean = false): T[] => {
저는 위의 답변이 저에게 통하지 않는 더 복잡한 경우를 겪었습니다.
이것이 저에게 도움이 되었습니다.
type SimpleTableProps<T> = {
data: Array<T & { id?: number }>;
...
};
const SimpleTable = <T,>(props: SimpleTableProps<T>): JSX.Element => {...}
언급URL : https://stackoverflow.com/questions/62437690/property-id-does-not-exist-on-type-t-2339-typescript-generics-error
반응형
'programing' 카테고리의 다른 글
소스 파일에도 'external C'를 추가해야 합니까? (0) | 2023.06.10 |
---|---|
Oracle의 SEQUENCE.NEXTVAL에 해당하는 MySQL (0) | 2023.06.10 |
Python은 키 표시가 없는 경우 키 표시를 업데이트합니다. (0) | 2023.06.10 |
XML을 반환하는 WebAPI (0) | 2023.06.10 |
한자가 있는 엑셀 파일을 CSV로 내보내려면 어떻게 해야 합니까? (0) | 2023.06.10 |