Typescript에서 정적 클래스 만들기
3807 단어 typescripttutorialbeginners
static
에 Typescript
클래스를 포함할 수 없지만 인스턴스화할 수 없는 클래스를 만드는 방법에는 여러 가지가 있습니다. 이 문서는 그들에 관한 것입니다.1. 생성자를 비공개로 설정
class JustAClass {
private constructor() { }
}
인스턴스화하려고 하면 Intellisense가 경고합니다.
2. 클래스 생성자에서 오류 발생
class Static {
constructor() {
throw new Error('No, you don\'t!');
}
}
생성자 내부에 오류를 던지면 작업이 완료되고, 이제 다른 클래스가 이 클래스를 상속하여 스스로 정적이 될 수 있습니다.
class JustAClass extends Static {
constructor() { super(); }
}
첫 번째 방법과 달리 도움이 되는 인텔리센스는 없지만.
3. 대신 초록 사용
abstract class JustAClass {}
Intellisense는
abstract
키워드를 오용한 것처럼 보이지만 인스턴스화하려고 할 때 여전히 경고를 표시합니다.4. 모든 클래스를 정적으로 만드는 데코레이터 만들기
이 접근 방식은 방법 2와 TypeScript의 데코레이터 기능을 결합합니다. 우리는 주어진 클래스를 상속하는 익명 클래스를 펌핑하고 생성자 호출을 오류 발생으로 재정의하는 함수를 만듭니다. 그리고 예, 그것은 모든 규칙을 위반하고 나쁜 boi처럼 슈퍼를 호출하지 않으므로
@ts-ignore
로 컴파일러를 침묵시킵니다.function Static<T extends new (...args: any[]) => any>(ctr: T): T {
return class extends ctr {
// @ts-ignore
constructor(...args: any[]) {
throw new Error('no way dude');
}
}
}
@Static
class JustAClass {}
인텔리센스의 안전성을 제공하지는 않지만 이 접근 방식은 상당히 선언적입니다.
이렇게 4가지 방법을 알아봤습니다 :)
Reference
이 문제에 관하여(Typescript에서 정적 클래스 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bwca/create-a-static-class-in-typescript-5ao1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)