반응형
형식 설명: 형식이 '개체'에 없습니다.
다음과 같은 설정이 있고, 를 사용하여 루핑할 때for...of
다음 오류가 발생합니다.
유형 "object"에 속성 "country"가 없습니다.
이렇게 하면 배열 내의 각 개체를 루프하여 개체 속성 값을 비교할 수 있습니까?
let countryProviders: object[];
export function GetAllProviders() {
allProviders = [
{ region: "r 1", country: "US", locale: "en-us", company: "co 1" },
{ region: "r 2", country: "China", locale: "zh-cn", company: "co 2" },
{ region: "r 4", country: "Korea", locale: "ko-kr", company: "co 4" },
{ region: "r 5", country: "Japan", locale: "ja-jp", company: "co 5" }
]
for (let providers of allProviders) {
if (providers.country === "US") { // error here
countryProviders.push(providers);
}
}
}
당신은 아마allProviders
라고 입력했다.object[]
뿐만 아니라.그리고 재산country
에 존재하지 않는다.object
타이핑에 관심이 없다면 둘 다 선언할 수 있습니다.allProviders
그리고.countryProviders
~하듯이Array<any>
:
let countryProviders: Array<any>;
let allProviders: Array<any>;
정적 유형 확인을 원하는 경우.구조체의 인터페이스를 생성하여 사용할 수 있습니다.
interface Provider {
region: string,
country: string,
locale: string,
company: string
}
let countryProviders: Array<Provider>;
let allProviders: Array<Provider>;
오브젝트에 키와 값의 페어가 포함되어 있는 경우는, 다음의 인터페이스를 선언할 수 있습니다.keyable
예를 들어 다음과 같습니다.
interface keyable {
[key: string]: any
}
다음으로 다음과 같이 사용합니다.
let countryProviders: keyable[];
또는
let countryProviders: Array<keyable>;
특정의 경우, 키 타입과 용도를 정의해 주세요.Record
유틸리티를 사용하여 개체를 정의합니다.
type ProviderKey="region" | "country" | "locale" | "company"
let countryProviders: Array<Record<ProviderKey,string>>;
네, 위의 방법을 적극 권장합니다.단, 선택의 여지가 없고 오브젝트 배열로 "all Providers"를 계속 사용하려면 이 방법을 사용하십시오.이것은 인터페이스를 만들지 않고도 작동했습니다.
if(providers["country"] === "US") // replacement
언급URL : https://stackoverflow.com/questions/43338763/typescript-property-does-not-exist-on-type-object
반응형
'programing' 카테고리의 다른 글
워드프레스에 Ajax를 사용하여 JSON 데이터 반환 (0) | 2023.03.27 |
---|---|
Angular ui-router - 상위 템플릿에서 전달된 중첩된 명명된 뷰의 매개 변수에 액세스하는 방법 (0) | 2023.03.27 |
Uncaught Type Error: $template.get은 함수가 아닙니다. (0) | 2023.03.27 |
React JS에서 비동기/대기 사용이 가능합니까? (0) | 2023.03.27 |
요청 매개 변수 '_csrf' 또는 헤더 'X-CSRF-TOKEN'에 잘못된 CSRF 토큰 'null'이 있습니다. (0) | 2023.03.27 |