有一个对象定义了一些字符串
static readonly COMPARISON_OPERATORS = {
[QueryObject.EQUALS]: "equals",
[QueryObject.NOTEQUALS]: "notequals",
...
}
然后我试图在另一个对象上调用一些方法 c
c[QueryObject.COMPARISON_OPERATORS[operator]].apply(c, args);
我得到了所有著名的“元素隐式具有任何类型”。我试图投射它以避免错误
(<() => {}>(<any> c)[
QueryObject.COMPARISON_OPERATORS[operator]
]).apply(c, args);
我已经有一段时间没有使用 ts 了,我的铸造技巧可能还差得很远。我需要如何投射这个?
尝试在您的COMPARISON_OPERATORS
声明中添加一些类型信息。
假设你的键(和值)是 type string
,你可以做这样的事情来保持对象文字语法:
static readonly COMPARISON_OPERATORS: {[key: string]: string;} = {
"=": "equals",
"!=": "notequals",
//...
}
其次,您正在尝试使用动态键定义对象的属性。这不能在定义对象文字时完成。
要使用动态键,您需要声明一个对象,然后手动添加键:
const myObject: {[key: string]: string;} = {};
myObject[QueryObject.EQUALS] = "equals";
// ...etc.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句