2

これらのツールを一緒に使用しています。

  • TypeScript
  • ゴクゴク
  • Gulp-Inject

私は次のことをしようとしています:

module My {
    interface IGulpInjectable extends string { // << Problem here!
        [gulp_inject: string] : string;
    }

    export class Cache {
        private items: { [key: string] : IGulpInjectable };

        constructor() {
            this.items = {
                "item1": { gulp_inject: "file1.html" },
                "item2": { gulp_inject: "file2.html" }
            }
        }

        getItem(key: string){
            return this.items[key].trim();
        }
    }
}

ファイルの内容を含む文字列gulp-injectに置き換えます。これが、 extend : のようなメソッドが TypeScript によって理解されるよう{ gulp_inject: "x.html" }にしたい理由です。IGulpInjectablestringtrim()

ただし、extends string有効ではありません。どちらでもないextends String。少なくとも、変更したくない現在のコンストラクター コードではそうではありません。

インターフェイスにすべてのメソッドがあることを TypeScript に伝えるにはどうすればよいstringですか?


脚注、私の現在の回避策:

        getItem(key: string){
            return (<any> this.items[key]).trim();
        }

しかし、それでは満足のいくものではありません。

4

2 に答える 2

-1

次のように変更してみてください:

interface String extends String{
    [gulp_inject: string] : string;
}
于 2016-03-17T17:13:01.287 に答える