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'])
我需要打字稿(或者,至少,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'])