1. ホーム
  2. typescript

[解決済み] TypeScriptエクスポート・インポートインターフェース

2022-05-28 05:04:08

質問

私は AMD モジュールを使用しており、いくつかの他のファイルをロードし、何をどのように公開するかを選択する 1 つのファイルの背後に複雑なインターフェイスを隠したいのです。それは動作し、私はこのソリューションを使用しますが、それは主にインターフェイスで、ちょっと醜い感じです。

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 

何か良い解決策はないでしょうか?全てを1つのファイルにまとめたくはないのですが、以下のようにしたいのです。 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';

// 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';