Typescript将一些函数作为self返回?

时间:2013-05-30 05:55:32

标签: javascript typescript

我正在寻找一种创建一个函数的方法,该函数可以创建另外两个函数作为自我函数。

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"

这只是一个例子,如果事情不清楚我很高兴你的反馈。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

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

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"

See it in typescript playground