在TypeScript中使用括号表示法引用对象属性的正确方法是什么?
在常规JavaScript中,我可以这样做:
returnValue(object, key) {
return object[key];
}
如果我调用returnValue({someKey: 1}, "someKey")
,该函数将返回1
。
当我尝试在TypeScript中执行此操作时,会收到:
TS1003: Identifier expected. Name expected.
执行此操作的正确方法是什么?
答案 0 :(得分:1)
您可以考虑使用keyof
:
interface YourObj {
someKey: string;
someOtherKey: number;
}
function returnValue(obj: YourObj, key: keyof YourObj) {
return obj[key];
}
console.log("Object value = " + returnValue({someKey: "someValue", someOtherKey: 1}, "someKey"))
如果您在非returnValue
以外的任何地方调用YourObj
并且在YourObj
中没有出现的任何键,则会给您带来编译错误
答案 1 :(得分:0)
Typescript是JavaScript的严格超集,因此JavaScript在Typescript中是合法的。
使用点符号或括号符号的JavaScript对象属性访问器在Typescript中均有效。运行下面的示例代码不会生成任何错误或警告。
要获得更多帮助,您需要提供一个minimal, reproducible example。
请参见 TypeScript Playground Demo
function returnValue(obj: any, key: string) {
return obj[key];
}
console.log("Object value = " + returnValue({someKey: 1}, "someKey"))
Object value = 1