복붙노트

[ANGULAR] Angular2의 인터페이스로 클래스를 내보내십시오

ANGULAR

Angular2의 인터페이스로 클래스를 내보내십시오

해결법


  1. 1.인터페이스 및 공급자 토큰으로 모두 사용되기 위해서는 추상 클래스 일 수 있습니다. 이것은 앵글 코드 기반 자체에서 수행되는 방법입니다.

    인터페이스 및 공급자 토큰으로 모두 사용되기 위해서는 추상 클래스 일 수 있습니다. 이것은 앵글 코드 기반 자체에서 수행되는 방법입니다.

    구체적인 클래스가 추상 클래스에서 상속받을 것이 많은 경우, 후자는 확장 가능할 수 있습니다.

    export abstract class Foo {
      abstract bar();
    
      baz() { ... }
    }
    
    export class ConcreteFoo extends Foo {
      bar() { ... }
    }
    
    ...
    provider: [{ provide: Foo, useClass: ConcreteFoo }]
    ...
    

    그렇지 않으면 추상적 인 클래스가 비 - 확장 가능하고 비 인스턴트 가정을 만드는 것이 더 안전합니다.

    export abstract class Foo {
      private constructor() {
        throw new Error('should not be instantiated directly');
      }
    
      abstract bar();
    }
    
    export class ConcreteFoo implements Foo {
      bar() { ... }
    }
    

    Typescript의 인터페이스로 모든 클래스를 사용할 수 있음을 알아야합니다. 그래서 인터페이스와 구현을 구별 할 필요가없는 진정한 필요가없는 경우 하나의 구체적인 수업 일 수 있습니다.

    export class Foo {
      bar() { ... }
    
      baz() { ... }
    }
    
    ...
    provider: [Foo]
    ...
    

    필요한 경우 나중에 인터페이스로 사용될 수 있습니다.

    export class SomeFoo implements Foo { ... }
    
    ...
    provider: [{ provide: Foo, useClass: SomeFoo }]
    ...
    
  2. from https://stackoverflow.com/questions/43572149/export-class-as-interface-in-angular2 by cc-by-sa and MIT license