2017-12-27 64 views
17

없이 클래스를 사용하여 내가 (곧) 다음 구문을 찾았나요? 내가 "aHero"의 유형을 검사하면, 그것은 단지 일반적인 객체이지 "영웅"유형이 아닙니다. 그것은 단지 생성자와 객체를 초기화하는 더 나은?타이프는 각 웹 사이트에 "투어 영웅"튜토리얼을 작업하는 동안 생성자

class Hero { 
    constructor(id: number, name: string) {} 
} 
+13

좋은 질문입니다. 대답은이 튜토리얼이 나쁜 습관을 조장한다는 것입니다. '영웅'은 '인터페이스'이어야합니다. –

+2

Todd Motto는 차이점을 설명하는 [great article] (https://toddmotto.com/classes-vs-interfaces-in-typescript)을 가지고 있는데, 언제'interface' 대'class'를 사용해야할까요? – mhodges

+0

참조를 추가 할 수 있습니까? 이 코드가있는 섹션? –

답변

2

당신은 당신이 그것을 사용하고있는 방법입니다 유형으로 클래스를 사용할 수있을 것이다. 그래서 영웅이 인터페이스인지 클래스인지에 관계없이 유형으로 사용하고 있기 때문에 중요하지 않습니다.

class Hero { id: number; name: string } 

또는

interface Hero { id: number; name: string } 

다음은 영웅 클래스 또는 인터페이스가

let hero: Hero = { id: 1, name: 'me' } 
interfaceclass 차별화가 interface 당신을 위해 단지이다

, 그것은하지 않습니다인지하지 우려를 않습니다 자바 스크립트로 transpile 얻을하지 마십시오. A class 않습니다 및 newinterface 수 없습니다.

생성자 또는 생성자가없는 경우 new이면 instanceof입니다. 당신이 키워드 new와 영웅의 인스턴스를 생성했기 때문에 true 될 것이

let hero = new Hero(); 

귀하의 instanceof 로그로 다시 시도하십시오.