2017-07-06 24 views
0

typescriptでプロトタイプを使用します。typescriptのプロトタイプ:要素に暗黙的に 'any'型があります。型 '_BaseOption'にインデックスシグネチャがありません

export class base{ 
    constructor() { 
     base.prototype["g"] = new option({}); 
    } 
} 

行3はこれを示しています。[ts]タイプ 'base'にインデックス署名がないため、要素に暗黙的に 'any'型があります。

ヘルプ!

+0

コードは動作しません。 – Awired

答えて

0

あなたのbaseクラスにインデックス署名を追加することができます

export class base{ 
    [prop: string]: option 
    constructor() { 
     base.prototype["g"] = new option({}); 
    } 
} 

しかし、そうすることは、あなたがbaseインスタンス上のインデックス署名を経由してアクセスする任意のプロパティもoptionとして入力されることを意味します。例:

let doesNotExist = new base()["doesNotExist"]; // Will compile fine without throwing error. 

あなたは言葉だけで、これらのプロパティを追加することができ、プロトタイプにプロパティの限られたセットを追加しようとしている場合は:

export class base{ 
    g: option 
    constructor() { 
     base.prototype["g"] = new option({}); 
    } 
} 

let g = new base()["g"] // OK 
let doesNotExist = new base()["doesNotExist"] // Error 
+0

ありがとう – Awired

関連する問題