タイプスクリプトのカテゴリ
16243 ワード
クラス定義
class Person {
//클래스 프로퍼티를 사전 선언하여야 한다.
name: string;
constructor ( name: string ) {
//클래스 프로퍼티수에 값을 할당
this.name = name;
}
walk() {
console.log(`${this.name} is walking.`);
}
}
const person = new Person('Lee');
person.walk(); // Lee is walking
クラスエンティティにクラスpropertyを事前に宣言する必要があります.アクセス制限
クラスベースのオブジェクト向け言語サポートをサポートするアクセス制限者
public, private, protected
.アクセス制限が指定されていない場合、デフォルトは
public
です.class Foo{
public x: string;
protected y: string;
private z: string;
constructor( x: string, y: string, z:string ){
this.x = x;
this.y = y;
this.z = z;
}
}
const foo = new Foo('x','y','z')
console.log(foo.x);
//프로퍼티 x 는 퍼블릭이므로 클래스 인스턴스를 통해 클래스 외부에서 참조 가능
console.log(foo.y);
//프로퍼티 y 는 프로젝티드이므로 클래스 인스턴스를 통해 클래스 외부에서 참조 불가하지만 자식 클래스에서는 참조 가능
console.log(foo.z);
//프로퍼티 z 는 프라이빗이므로 클래스 인스턴스는 물론 자식 클랙스에서도 참조 불가
readonlyキーワード
class Foo {
private readonly MAX_LEN: number = 5;
private readonly MSG: string;
constructor() {
this.MSG = 'hello';
}
log() {
// readonly가 선언된 프로퍼티는 재할당이 금지된다.
this.MAX_LEN = 10; // Cannot assign to 'MAX_LEN' because it is a constant or a read-only property.
this.MSG = 'Hi'; // Cannot assign to 'MSG' because it is a constant or a read-only property.
console.log(`MAX_LEN: ${this.MAX_LEN}`); // MAX_LEN: 5
console.log(`MSG: ${this.MSG}`); // MSG: hello
}
}
静的キー
ES 6クラスでは、
static
キーワードはクラスの静的メソッドを定義する.静的メソッドは、クラスインスタンスではなくクラス名を呼び出します.したがって、クラスインスタンスを作成する必要はありません.class Foo {
constructor(prop) {
this.prop = prop;
}
static staticMethod() {
/*
정적 메소드는 this를 사용할 수 없다.
정적 메소드 내부에서 this는 클래스의 인스턴스가 아닌 클래스 자신을 가리킨다.
*/
return 'staticMethod';
}
prototypeMethod() {
return this.prop;
}
}
// 정적 메소드는 클래스 이름으로 호출한다.
console.log(Foo.staticMethod());
const foo = new Foo(123);
// 정적 메소드는 인스턴스로 호출할 수 없다.
console.log(foo.staticMethod()); // Uncaught TypeError: foo.staticMethod is not a function
抽象クラス
抽象クラスには、1つ以上の抽象メソッドが含まれていてもよいし、通常のメソッドが含まれていてもよい.抽象メソッドとは、コンテンツがなく、メソッド名とタイプのみを宣言するメソッドで、宣言時に
abstract
キーワードを使用します.インスタンスを直接生成することはできません.継承にのみ使用できます.abstract class Animal {
// 추상 메소드
abstract makeSound(): void;
// 일반 메소드
move(): void {
console.log('roaming the earth...');
}
}
// 직접 인스턴스를 생성할 수 없다.
// new Animal();
// error TS2511: Cannot create an instance of the abstract class 'Animal'.
class Dog extends Animal {
// 추상 클래스를 상속한 클래스는 추상 클래스의 추상 메소드를 반드시 구현하여야 한다
makeSound() {
console.log('bowwow~~');
}
}
const myDog = new Dog();
myDog.makeSound();
myDog.move();
Reference
この問題について(タイプスクリプトのカテゴリ), 我々は、より多くの情報をここで見つけました https://velog.io/@qor8917/타입스크립트의-Classテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol