programing

인터페이스에 대한 검사 인스턴스

lastmoon 2023. 6. 11. 11:15
반응형

인터페이스에 대한 검사 인스턴스

다음 코드가 주어집니다.

module MyModule {
  export interface IMyInterface {}
  export interface IMyInterfaceA extends IMyInterface {}
  export interface IMyInterfaceB extends IMyInterface {}

  function(my: IMyInterface): void {
    if (my instanceof IMyInterfaceA) {
      // do something cool
    }
  }
}

"ImmyInterfaceA에서 이름을 찾을 수 없습니다." 오류가 발생합니다.이 상황을 처리하는 올바른 방법은 무엇입니까?

형식 정보가 컴파일된 JavaScript 코드로 변환되지 않으므로 인터페이스를 런타임에 확인할 수 없습니다.

특정 속성 또는 메서드를 확인하고 수행할 작업을 결정할 수 있습니다.

module MyModule {
  export interface IMyInterface {
      name: string;
      age: number;
  }
  export interface IMyInterfaceA extends IMyInterface {
      isWindowsUser: boolean;
  }
  export interface IMyInterfaceB extends IMyInterface {

  }

  export function doSomething(myValue: IMyInterface){
    // check for property
    if (myValue.hasOwnProperty('isWindowsUser')) {
      // do something cool
    }
  }
}

TypeScript는 인터페이스에 오리 타이핑을 사용하므로 객체에 특정 멤버가 포함되어 있는지 확인해야 합니다.

if ((<IMyInterfaceA>my).someCoolMethodFromA) {
    (<IMyInterfaceA>my).someCoolMethodFromA();
}

언급URL : https://stackoverflow.com/questions/31748277/instanceof-check-on-interface

반응형