이 코드가 있습니다.
function isArray(v: any): v is any[] {
return Array.isArray(v);
}
type Settings = {
[key: string]: string | string[]
}
function myfunc(settings: Settings) {
Object.keys(settings).forEach(key => (
(isArray(settings[key]))
? settings[key].forEach(val => console.log(val))
: console.log(settings[key])
));
}
에서 settings[key].forEach(
나는 메시지를보고 있어요 :
'forEach'속성이 'string | 끈[]'.
'forEach'속성이 'string'유형에 없습니다.
그렇다면 isArray
유형 가드가 작동 하지 않는 이유는 무엇입니까?
타입 가드는 여기처럼 getter 표현식에서 작동하지 않습니다.
(isArray(settings[key])) // (1)
? settings[key].forEach(val => console.log(val)) // (2)
컴파일러는 settings[key]
(1)과 (2)가 같은 것인지 확신 할 수 없기 때문 입니다. 먼저 임시 변수에 할당해야합니다.
let temp = settings[key];
(isArray(temp))
? temp.forEach(val => console.log(val))
: console.log(temp)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다