javascript 类数组函数(javascript 类 C# 索引器)

javascript array like function (javascript indexer C# like)

我需要打字稿(或者,至少,javascript)一个我可以像数组一样call/use的函数: myFunc[someInput]

我知道我可以做类似的事情:

interface IInputs {
    "someInput1": someType,
    "someInput2": someType,
}
interface someType {
    // ...
}
var myFunc: IInputs;

所以我可以写:

myFunc["someInput1"]

第一个问题是我必须对每个可能的输入进行硬编码。输入是一个字符串,但可以是任何字符串。另一个是我的函数应该像这样调用另一个函数(一个 'normal' 函数):

myFunc[input: string] : any {
    //...
    return anotherFunc(input);
}

我已简化我的问题以仅显示相关事实。

您似乎在寻找 Proxies:

function someOtherFunc(prop: string) {
    return "you said " + prop;
}

interface Indexable {
    [key: string]: any;
}


let myFunc: Indexable = new Proxy({}, {
    get(_, prop: string) {
        return someOtherFunc(prop);
    }
});


console.log(myFunc['hello'])
console.log(myFunc['hey'])

JS 版本:

    function someOtherFunc(prop) {
        return "you said " + prop;
    }
    
    let myFunc = new Proxy({}, {
        get(_, prop) {
            return someOtherFunc(prop);
        }
    });
    
    
    console.log(myFunc['hello'])
    console.log(myFunc['hey'])