19

関数プロトタイプを拡張しましたが、typescript が認識しません。

Function.prototype.proc = function() {
  var args, target, v;
  var __slice = [].slice;
  args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
  target = this;
  while (v = args.shift()) {
    target = target(v);
  }
  return target;
};
// generated by coffee-script

var foo: (number) => (string) => number
  = (a) => (b) => a * b.length;
console.log(foo.proc("first", "second"))

結果: tsc -e

The property 'proc' does not exist on value of type 'Function'

このオブジェクトを拡張するにはどうすればよいですか?

4

5 に答える 5

33

標準のtypescriptlibには、Functionオブジェクトのメンバーを宣言するFunctionインターフェイスがあります。次のような独自のアドオンを使用して、procをそのインターフェイスのメンバーとして宣言する必要があります。

interface Function {
    proc(...args: any[]): any;
}

このインターフェースは、「proc」を使用する予定の場所から参照する必要があります。

于 2012-10-07T18:03:48.343 に答える