생성자가 없는 클래스를 사용하는 유형 스크립트
Angular 웹사이트에서 "Tour of Heroes" 튜토리얼로 작업하는 동안 (짧은 시간 동안) 다음 구문을 발견했습니다.
class Hero {
id: number,
name: string,
}
const aHero: Hero = {
id: 1,
name: 'Superman'
}
console.log(aHero instanceof Hero); //false
이렇게 하면 무슨 소용이 있겠습니까?내가 "aHero"의 종류를 확인했을 때, 그것은 "Hero" 유형이 아닌 일반적인 개체일 뿐입니다.생성자를 사용하여 객체를 초기화하는 것이 더 나을까요?:
class Hero {
constructor(id: number, name: string) {}
}
당신은 클래스를 당신이 사용하는 방식과 같은 유형으로 사용할 수 있습니다.그래서 Hero가 인터페이스든 클래스든 상관없습니다. 왜냐하면 당신은 그것을 유형으로 사용하고 있기 때문입니다.
class Hero { id: number; name: string }
또는
interface Hero { id: number; name: string }
다음은 Hero가 클래스인지 인터페이스인지 여부와 관련이 없습니다.
let hero: Hero = { id: 1, name: 'me' }
어디에interface
그리고.class
차별화는interface
당신만을 위한 것이고, 자바스크립트로 변형되지 않습니다.aclass
할 수도 있고 할 수도 없습니다.new
하나의interface
.
생성자 또는 생성자가 없는 경우new
그렇다면 그것은instanceof
이걸로 다시 해보세요.
let hero = new Hero();
당신의.instanceof
로그는true
당신이 키워드로 영웅의 인스턴스를 만들었기 때문입니다.new
.
나는 이 질문이 이전에 답변된 적이 있다는 것을 알고 있지만 객체 지향 코드에 관한 한 항상 이렇습니다.
생성자 없이도 이 작업을 수행할 수 있습니다.
let hero: Hero = { ID: 1, Name: 'goku'};
그러나 생성자와 인스턴스화를 원한다면 클래스에서 이 작업을 수행할 수 있습니다.
class Hero
{
//notice optional parameters. You have more flexibility this way.
constructor(id?: number, name?: string)
{
this.ID = id;
this.Name = name;
}
ID: number;
Name: string
}
구현을 통해 이 작업을 수행합니다.
let hero: Hero = new Hero(1,'goku');
let hero2: Hero = { ID: 2, Name: 'superman' }
언급URL : https://stackoverflow.com/questions/47996399/typescript-using-classes-without-constructor
'programing' 카테고리의 다른 글
정의되지 않은 함수 convert_to_screen() 호출 (0) | 2023.06.13 |
---|---|
제약 조건이 있는 그룹별 시퀀스 번호 추가 (0) | 2023.06.13 |
Oracle의 JDBC 쿼리 시간 초과는 어떻게 구현됩니까? (0) | 2023.06.13 |
Visual Studio 2015에서 Typings.json for Typescript에 타이핑을 추가하려면 어떻게 해야 합니까? (0) | 2023.06.13 |
ASP.NET Core에서 내 사이트의 기본 URL을 어떻게 얻을 수 있습니까? (0) | 2023.06.13 |