0

我正在寻找一种创建函数的方法,该函数将其他 2 个函数创建为自函数。

var anyVariable = createMeFunc();

public createMeFunc(): string {       

   var setFunc = ( value: any) => {
      console.log("set function");
   }
   var getFunc = (): string => {
      console.log("get function");
      return "returnVal";
   }
   return setFunc, getFunc;
}

anyVariable("someValue"); //calls setFunc
anyVariable(); //calls getFunc, returns "returnVal"

如果有不清楚的地方,这只是一个示例,我很高兴收到您的反馈。

4

2 回答 2

2

非 ES5 解决方案可能如下所示:

interface Foo {
    (): any;
    (value: any): void;
}

function createFoo(): Foo {
    var getFunc = () => { console.log("get"); return "foo"; }
    var setFunc = (value: any) => { console.log("set"); }

    return (value?: any) => {
        if (typeof value === 'undefined') {
            setFunc(value);
        } else {
            return getFunc();
        }
    }
}

var f = createFoo();
f("bar");
f();
于 2013-05-30T06:18:54.577 回答
1

如果您正在寻找 EcmaScript 5 setter 和 getter:

var foo = new Foo();

class Foo{  
    get anyVariable():string{
      console.log("get function");
      return "returnVal";
    }
    set anyVariable(string){
        console.log("set function");
    }
}

foo.anyVariable="someValue"; //calls setFunc
var x = foo.anyVariable; //calls getFunc, returns "returnVal"

在打字稿游乐场看到它

于 2013-05-30T06:16:11.413 回答