私はこのような基本的な機能を提供機能があります。NPMモジュール内からインターフェースにプロパティを追加
// File 1: Core function
export const extensions = [];
export interface ResultInterface {
fullname:string,
age:number
}
function maFunction():ResultInterface {
var o = {
fullname:"alex",
age:21
};
extensions.forEach((extension) => o = extension(o));
return o;
}
あなたはmaFunction
上記のコードから見ることができるようにextensions
を通して見ることによって拡張可能ですそれらの機能を適用することができます。
例えば、一つはNPMを通じて、次の拡張機能をインストールすることができます。
// File 2: Extensions 1 (installed via NPM)
extensions.push(function (o) {
o.ageInMonths = o.age * 12;
return o;
});
// File 3: Extensions 2 (installed via NPM)
extensions.push(function (o) {
o.firstname = o.fullname.split(" ")[0];
o.lastname = o.fullname.split(" ")[1];
});
を今すぐユーザーランドに:私は活字体が追加されたプロパティを検出するのに十分にスマートであることを期待していなかった
// File 4: Userland execution
var myVar = maFunction();
myVar.ageInMonths // error: Property 'ageInMonths' does not exist on type 'ResultInterface'.
myVar.firstname // error: Property 'firstname' does not exist on type 'ResultInterface'.
myVar.lastname // error: Property 'lastname' does not exist on type 'ResultInterface'.
拡張機能を介してしかし、どのエクステンションを手動で追加することができますか?それぞれの拡張機能はどのようにしてResultInterface
を拡張し、独自のプロパティを追加できますか?私は考えていない