홈>
알 수없는 객체가 특정 유형인지 어떻게 (런타임에서) 확인할 수 있습니까? 그런 다음 공식적으로 해당 유형으로 변환하고 무언가를 수행 하시겠습니까?
다음과 같이하고 싶습니다 :
const /** {Object} */ someObject = {name: 'Apple', color: 'Red'};
if (someObject is Fruit) {
// Convert to {Fruit} and do something with it.
return /** {Fruit} */ (someObject);
}
여기서
Fruit
속성 이름과 색상을 가진 클래스입니다.
보다 구체적으로, 나는 단지
Fruit
를 만들 수 없습니다
JSON.parse
에서 객체를 가져올 때 생성자가있는 객체
.
지금까지 시도했습니다 :
if (someObject instanceof Fruit)
이것은 거짓으로 해결되었습니다. 그리고 나는 시도했다 :
const aFruit = /** @type {Fruit} */ someObj;
그러나 이것은 실제로 아무것도하지 않는 것 같습니다. 즉, 내가
someObj
를 지나갈 때
이름이나 색상이없는 속성은 여전히
Fruit
로 취급됩니다.
.
아마도 더 복잡한/맞춤형 솔루션이 필요합니까? 즉, 이것이 폐쇄에 내장되어 있습니까? 아니면 속성을 직접 확인해야합니까?
- 답변 # 1
- 답변 # 2
Closure의 타입 시스템은 컴파일 타임에만 존재합니다.
C에서와 마찬가지로, 캐스트는 단순히 타입 시스템에 "이 값이 증명할 수는 없지만 실제로이 타입임을 보증합니다"라고 말합니다.
이것이 사실이 아닌 경우 정의되지 않은 동작이 발생합니다 (특히 고급 최적화 사용).
관련 자료
- python - float 객체의 다중성 확인
- 객체에 하나의 속성 만 있는지 또는 두 개의 속성 만 있고 자바 스크립트에서 다른 속성이 없는지 어떻게 확인합니까?
- Google 시트는 월을 숫자로 월 이름으로 변환
- javascript - 목록 객체를 배열로 변환
- c# - 객체가 생성 된 클래스 확인
- python 오류 - json 파일에 쓰는 동안 암시 적으로 'list'객체를 str로 변환 할 수 없습니다
- c# - MemberExpression에서 "개체로 변환"처리
- javascript - 배열을 별도의 객체 배열로 변환
- python - dnspython dnsresolverAnswer 객체를 원시 바이트 응답으로 변환
- python - Pandas에서 객체를 DateTime으로 변환하는 방법
- javascript - 쉼표를 추가하지 않고 객체를 문자열로 변환하는 방법은 무엇입니까?
- python - 개체를 문자열로 변환 할 수 없습니다
- javascript - 다른 개체 내에서 하나 이상의 개체를 확인하는 방법
- Google 클라우드 자연어 엔티티 감정 응답을 Python에서 JSON/dict로 변환하는 방법은 무엇입니까?
- java - 문자열 응답을 반복 가능한 객체로 변환하는 방법
- 월 이름, 날짜 및 연도를 사용하여 문자열을 DateTime 객체로 변환하는 방법은 무엇입니까?
- c# - 직렬화 된 익명 개체를 다시 개체로 변환하는 방법은 무엇입니까?
- javascript - 한 개체의 속성 이름이 다른 개체에 있는지 어떻게 확인합니까?
- javascript - 문자열 키 쌍의 배열을 객체로 변환
- c# - 중첩 된 개체를 배열로 변환
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
instanceof
당신이 찾고있는 것입니다. 특정 생성자 함수 (또는 더 나은 ES2015 클래스)에서 주어진 값이 생성되었는지 확인하는 방법입니다.원래의 예제에서 어떤 물체를 과일로 만드는 것은 무엇입니까? 익명 개체를 사용하고 있습니다.
name
가있는 개체입니까? 그리고color
과일 속성? 이것은 약간 불분명하고 구현에 따라 다릅니다. "객체를 과일로 만드는 이유는 무엇입니까?"객체가 과일 인터페이스를 구현하는지 (올바른 속성을 가지고 있는지) 확인하려면 해당 속성을 확인하십시오.