에 인터페이스를 변환 나는 다음과 같은 코드가 있습니다타이프 : 클래스
interface X {
type : string;
val : number;
}
class X1 implements X {
type : string;
val : number;
}
var p1 : X[] = [{type:'a', val:8}];
for (var n in p1) {
var p2 : X1 = p1[n];
}
var p3 : X1 = p1[0];
P2와 P3 두 유형의 X1을 가진 것으로 선언하고
이컴파일러 즐겁게 받아들이는 타입 X의 값으로 초기화됩니다 p2의 선언이지만, "X를 'X1'로 변환 할 수 없다는 p3에 대해 불평합니다.
왜 이러한 차이가 있습니까?
나는 컴파일러 메시지가 잘못된 것이라고 생각한다. 마지막 행을'var p3 : X1 = p1 [ "a"];로 변경하면 잘 컴파일됩니다. X []가 연관 (문자열 인덱스) 배열 인 것처럼 보이지만 왜 그런지는 잘 모르겠습니다. – JcFx