반응형
TypeScript에서 중첩 클래스를 만들 수 있습니까?
TypeScript에서 클래스를 중첩하는 방법이 있습니까? 예를 들어 다음과 같이 사용하고 싶습니다.
var foo = new Foo();
var bar = new Foo.Bar();
TypeScript 1.6부터 클래스 표현식이 있습니다 ( 참조 ).
이는 다음을 수행 할 수 있음을 의미합니다.
class Foo {
static Bar = class {
}
}
// works!
var foo = new Foo();
var bar = new Foo.Bar();
다음은 클래스 표현식을 사용하는 더 복잡한 사용 사례 입니다. 내부 클래스가 외부 클래스의 개인 멤버에 액세스 할 수 있습니다.
class classX {
private y: number = 0;
public getY(): number { return this.y; }
public utilities = new class {
constructor(public superThis: classX) {
}
public testSetOuterPrivate(target: number) {
this.superThis.y = target;
}
}(this);
}
const x1: classX = new classX();
alert(x1.getY());
x1.utilities.testSetOuterPrivate(4);
alert(x1.getY());
컴파일 오류가 발생하지 않고 내 보낸 클래스와 함께 작동하도록 할 수 없었고 대신 네임 스페이스를 사용했습니다 .
namespace MyNamespace {
export class Foo { }
}
namespace MyNamespace.Foo {
export class Bar { }
}
유형 선언 파일의 컨텍스트에있는 경우 클래스와 네임 스페이스를 혼합하여이를 수행 할 수 있습니다.
// foo.d.ts
declare class Foo {
constructor();
fooMethod(): any;
}
declare namespace Foo {
class Bar {
constructor();
barMethod(): any;
}
}
// ...elsewhere
const foo = new Foo();
const bar = new Foo.Bar();
이 접근 방식은 타이프 스크립트 Angular2 / Ionic2 환경에서 작동했습니다.
foo.ts
import { Bar} from './bar';
export class Foo {
id: number;
bar: Bar;
}
bar.ts
export class Bar {
id: number;
}
클래스 사용 예 :
foo = new Foo();
foo.bar = new Bar();
foo.bar.id = 1;
참고URL : https://stackoverflow.com/questions/32494174/can-you-create-nested-classes-in-typescript
반응형
'IT박스' 카테고리의 다른 글
.toInt ()가 Swift 2에서 제거 되었습니까? (0) | 2020.12.04 |
---|---|
ASP.NET Core를 사용하여 절대 URL 가져 오기 (0) | 2020.12.04 |
__init__에서 await로 클래스 속성을 설정하는 방법 (0) | 2020.12.04 |
Woocommerce에서 맞춤 제품 속성 가져 오기 (0) | 2020.12.03 |
터미널에서 현재 분기 및 폴더 경로를 표시하려면 어떻게해야합니까? (0) | 2020.12.03 |