Javascript typescript:具有属性的函数

Javascript typescript:具有属性的函数,javascript,angularjs,typescript,Javascript,Angularjs,Typescript,我对下面的代码有问题: CoreModule.filter('translateEnum', ['$parse', '$translate', function( $parse: angular.IParseService, $translate: angular.translate.ITranslateService ) { var translateFilter = function (translationId, namespace, interpolateParams, in

我对下面的代码有问题:

CoreModule.filter('translateEnum', ['$parse', '$translate', function(
  $parse: angular.IParseService,
  $translate: angular.translate.ITranslateService
) {
  var translateFilter = function (translationId, namespace, interpolateParams, interpolation): string {
    if (!translationId) {
      return '';
    } else {
      if (!angular.isObject(interpolateParams)) {
        interpolateParams = $parse(interpolateParams)(this)
      }
      return $translate.instant( namespace + '.' + translationId, interpolateParams, interpolation)
    }
  }
  translateFilter.$stateful = true;
  return translateFilter;
}]);
我经常遇到编译错误:

>> app/modules/core/filters/filters.ts(47,19): error TS2339: Property '$stateful
' does not exist on type '(translationId: any, namespace: any, interpolateParams
: any, interpolation: any) => string'.
问题是我需要将
$stateful:boolean
属性分配给函数对象,而我不知道如何在typescript中实现这一点


以下是我做过的一些尝试,但都失败了:

interface StatefulFunction {
  (translationId, namespace, interpolateParams, interpolation): string;
  $stateful: boolean;
}

甚至

interface StatefulFunction extends Function {
  $stateful: boolean;
}

您可以这样做:

interface StatefulFunction {
    (): string;
    $stateful: boolean;
}

var translateFilter = <StatefulFunction>function (/*...*/) {
    /*...*/
};
接口状态函数{
():字符串;
$stateful:boolean;
}
var translateFilter=函数(/*…*/){
/*...*/
};

根据这个答案改编:

你能试试
var translateFilter:any
@vmaksym no****ing方法吗。TypeScript的目的不是通过使用
any
来避免类型检查。
interface StatefulFunction {
    (): string;
    $stateful: boolean;
}

var translateFilter = <StatefulFunction>function (/*...*/) {
    /*...*/
};