개발하자
유형 스크립트: 형식 'string' 표현식을 사용하여 형식을 인덱싱할 수 없으므로 요소에 암시적으로 'any' 형식이 있습니다.
Cuire
2022. 12. 19. 10:30
반응형
유형 스크립트: 형식 'string' 표현식을 사용하여 형식을 인덱싱할 수 없으므로 요소에 암시적으로 'any' 형식이 있습니다.
다음 오류를 해결할 수 있는 방법을 찾기 위해 리액트 앱을 JavaScript에서 TypeScript로 변환하고 있습니다.
형식 'string' 식을 사용하여 'Schedule' 형식을 인덱싱할 수 없으므로 요소에 암시적으로 'any' 형식이 있습니다. 'Schedule' 유형에서 매개 변수가 'string'인 인덱스 서명을 찾을 수 없습니다.
이게 암호야...
export interface Schedule {
display: Display;
monday: Day;
tuesday: Day;
wednesday: Day;
thursday: Day;
friday: Day;
saturday: Day;
sunday: Day;
}
export interface Diary {
schedule: Schedule;
appointments: Array<Appointment>;
}
// ...
const dayKey: string = 'monday'
const day: Day = diary.schedule[dayKey] // <-- Here is the error
// ...
이전에 자바스크립트에서 작업하던 데이터 구조가 json에 불과했기 때문에 이것은 매우 효과적이었지만, 나는 TypeScript로 같은 것을 얻는 방법을 이해하는 데 어려움을 겪고 있다.
감사해요.
TypeScript의 키워드를 사용할 수 있습니다.
const dayKey: keyof Schedule = 'monday'
const dayKey: string = 'monday';
이것에 대한 유형은 , 이것은 너무 일반적입니다. 모든 문자열에 예약 개체에 항목이 있는 것은 아닙니다. 당신과 나는 당신이 접근할 수 있는 유일한 가능성이 있다는 것을 알고 있지만, 그것은 타이프스크립트가 사용하는 유형 정보에서는 사용할 수 없다.
더 구체적인 유형의 여러 옵션이 있습니다. 예약에서 키 중 하나로 지정할 수 있습니다.
const dayKey: keyof Schedule = 'monday';
아니면 당신은 그것이 특정한 것이라고 지정할 수 있다.
const dayKey: 'monday' = 'monday';
이를 구체적으로 지정하는 또 다른 방법은 다음과 같습니다. 이 방법은 활자를 추론하는 것을 담당하지만 가능한 한 엄격하게 추론하도록 지시합니다.
const dayKey = 'monday' as const;
특정 데이터 유형을 사용하는 것을 선호하지만 동적 응답을 받는 경우에는 다음과 같이 선언할 수 있습니다.
let obj = Array<any>()
반응형