TypeScript экспортировать импортированный интерфейс
Я использую модули 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
один файл.
Ответы
Ответ 1
Существует синтаксис импорта экспорта для устаревших модулей и стандартный формат экспорта для современных модулей 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';
// 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';
Ответ 2
Несколько примеров, кроме # 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)