의 클래스에 설정하는 것이 유효 동적 오브젝트 나는 타이프 라이터와 약간의 재생이 발견된다왜 타이프
이class Greeter {
e: number;
p: boolean = true;
}
const xxx = new Greeter(); // true
console.log(xxx instanceof Greeter);
const xxx2: Greeter = { e: 1, p: true }; // <--- 1. why is this valid?
console.log(xxx2 instanceof Greeter); // false
const xxx3: Greeter = Object.setPrototypeOf({ e2: 1 }, Greeter.prototype); // <-- 2. no warning?
console.log(xxx2 instanceof Greeter); // true
그래서 제 질문은 다음과 같습니다
왜 그것을이다 typescript에서 유효하다. 실제 객체가 아닌 클래스 객체에 동적 객체를 할당한다. 진짜 수업이 아닌 것 같습니다. 향후 개선 될 예정입니까?
해킹 인 것 같습니다. 그러나 형식에 대해 깨끗한 Typescript 함수는 없습니다. 이것은 더 깨끗한 것이어야하며, 더 나은 검사 기능이 있습니까?
엄격한 옵션이있는 Typescript 2.4.2를 사용합니다.
이기 때문에 typescript는 [duck typing] (https://www.typescriptlang.org/docs/handbook/interfaces.html)을 사용하기 때문에 –
typescript는 실제로 컴파일 유형을 검사하는 것으로 실제 유형의 마술은 수행하지 않습니다. 자바 스크립트 코드. –
덧붙여 말하자면, 첫 번째 오류는 [flow] (https://flow.org)에 의해보고되므로 흐름이 사용자 요구에 더 잘 맞을 수 있습니다. TypeScript는 구조체 타이핑을 사용하고, 객체가 생성 된 방식을 사용합니다 (특히, 클래스 생성자로 수행했는지 여부 - 이것은'instanceof' 검사에 관한 것입니다). TypeScript 유형 시스템의 일부가 아니며 변경되지 않습니다. – artem