AMD modülleri kullanıyorum ve bir dosya arkasındaki karmaşık bir arabirimi gizlemek istiyorum; bu da birkaç dosya yükler ve neyin açığa çıkacağını ve nasıl seçileceğini seçer. Çalışır, bu çözümü kullanırım, ancak çoğunlukla arayüzler ile çok çirkin hissediyor.TipScript dışa aktarılan içe aktarma arabirimi
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
Kullanımı:
oradaimport 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
Herhangi daha iyi çözümlere? Her şeyi tek bir dosyaya koymak istemiyorum ama import
tek bir dosya istiyorum.
// 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';
Tüm varyasyonlar için teşekkürler! TS çok daha güzel oldu. –
Ancak, bu yeniden adlandırma stilini bir ad alanında kullanmak yasa dışıdır. –
Eski örneğinize benzer bir arayüzün dışa aktarılması ve içe aktarılması için tek liner var mı? Ya da sadece aynı çizgiyi ithal etmek ve tekrar kullanmak, ancak bunu bir ihracata çevirmek gibi bir durum mu? './message-types' öğesinden içe aktarma {IMessage}; sonra bir sonraki satırda './message-types' öğesinden {IMessage}; – mtpultz