>
내가 타이프에서 다음 세터를 썼다 :

public set data(data: Array<Data>) {
  console.log(data[0].getterProperty);
  console.log(data[0] instanceof Data);
  console.log(typeof data[0]);
  this.setGridDataIfReady();
}

data 가정  하나의 항목이 포함되어 있습니다.

undefined
false
object

이러한 이유는 무엇입니까? Data 유형의 객체 만해서는 안됩니다.  그런 식으로 배열하면 배열에 있습니까?


  • 답변 # 1

    Typescript는 실행 가능한 언어가 아니며 JavaScript로 번역됩니다. 실행 시간에 당신이 타이프 스크립트를 자바 스크립트를 실행하고 있지 않은지이 의미합니다. 이 때문에 때때로 이상한 행동을하게됩니다.

    배열의 유형을 "Data"로 설정 한 것이 사실이지만, Typescript가 변환 될 때 런타임 유형은 "Object"일뿐입니다. 이 예외가 발생합니다 잘못된 유형을 전달 자바처럼되지 않습니다. Typescript 유형이 런타임 오류를 방지 할 것으로 기대하지 마십시오.

    실제로 유형을 캡처하고 배열 항목이 "Data"유형이 아닌 경우 실패하려면 "new Data"를 사용하여 모든 항목을 작성했는지 확인하십시오. 그러면 객체의 생성자가 설정되고 "instanceof Data"가 true를 반환합니다.

관련 자료

  • 이전 tomcat - 서블릿 컨테이너는 인증 된 사용자의 요청을 어떻게 식별합니까?
  • 다음 canvas - canvg drawSvg ()가 svg를 올바르게 배치 할 수 없습니다