반응형
TypeScript 내보내기 Import 인터페이스
AMD 모듈을 사용하고 있는데, 하나의 파일 뒤에 복잡한 인터페이스를 숨기고 여러 개의 다른 파일을 로드하여 표시할 내용과 방법을 선택합니다.동작합니다. 이 솔루션을 사용하고 있습니다만, 주로 인터페이스와 함께라면, 조금 추한 느낌이 듭니다.
import Types = require('./message-types');
import MessageBaseImport = require('./message-base');
export interface IMessage extends Types.IMessage {} // This is an interface
export var MessageBase = MessageBaseImport; // This is a class
사용방법:
import Message = require('message');
import { * } as Message from 'message'; // Or with ES6 style
var mb = new Message.MessageBase(); // Using the class
var msg: Message.IMessage = null; // Using the interface
더 나은 해결책이 있나요?모든 것을 한 파일에 정리하고 싶지 않지만import일렬 종렬
레거시 모듈에는 내보내기 Import 구문이 있으며 최신 ES6 모듈에는 표준 내보내기 형식이 있습니다.
// export the default export of a legacy (`export =`) module
export import MessageBase = require('./message-base');
// export the default export of a modern (`export default`) module
export { default as MessageBase } from './message-base';
// when '--isolatedModules' flag is provided it requires using 'export type'.
export type { default as MessageBase } from './message-base';
// export an interface from a legacy module
import Types = require('./message-types');
export type IMessage = Types.IMessage;
// export an interface from a modern module
export { IMessage } from './message-types';
여기서 #c-snover의 답변 외에 몇 가지 예를 들어보겠습니다.조립할 수 있어요.
import 'jquery'; // import a module without any import bindings
import $ from 'jquery'; // import the default export of a module
import { $ } from 'jquery'; // import a named export of a module
import { $ as jQuery } from 'jquery'; // import a named export to a different name
import * as crypto from 'crypto'; // import an entire module instance object
export var x = 42; // export a named variable
export function foo() {}; // export a named function
export default 42; // export the default export
export default function foo() {}; // export the default export as a function
export { encrypt }; // export an existing variable
export { decrypt as dec }; // export a variable as a new name
export { encrypt as en } from 'crypto'; // export an export from another module
export * from 'crypto'; // export all exports from another module
// (except the default export)
특히 제 경우 인터페이스를 내보내는 대신 '선언'해야 했습니다.
declare interface IFluxStoreSyncOptions{
namespacedKey: string;
}
인터페이스를 다른 파일의 타입으로 사용하려면 , 다음과 같이 합니다.
export function FluxStoreSync(options: IFluxStoreSyncOptions){
}
이렇게 하면 인터페이스를 내보내고 가져올 필요가 없습니다.
언급URL : https://stackoverflow.com/questions/30712638/typescript-export-imported-interface
반응형
'programing' 카테고리의 다른 글
| wp_localize_script가 작동하지 않습니다. (0) | 2023.03.04 |
|---|---|
| Linux에서 에러 mongod가 정지했는데 잠기거나 저널 파일을 저장할 공간이 부족한 이유는 무엇입니까? (0) | 2023.03.04 |
| 스프링: 특정 인터페이스 및 유형의 모든 Bean을 가져옵니다. (0) | 2023.03.04 |
| Mongodb find() 쿼리 : 원하는 값만 반환(중복 없음) (0) | 2023.03.04 |
| 봄철 LocalDateTime RequestParam 사용방법"String을 LocalDateTime으로 변환하지 못했습니다"라고 표시됩니다. (0) | 2023.03.04 |