typescript如何解决对象动态获取属性并调用方法的类型定义?
如题demo 如下:
var obj = {
aaa:{
init:function(){
console.log('aaa')
}
},
bbb:{
init:function(){
console.log('bbb')
}
}
}
function fn(type:string){
obj[type].init()
}
fn('ccc')
报错 类型“("string")[]”上不存在属性“init”
如何定义类型,可以保证这里正常调用?
回复
1个回答
test
2024-06-25
可以通过 typeof
获取对象 obj
的类型,再通过 keyof
获取 obj
类型中所有 key 的集合,进而确认 obj[type]
的类型。
var obj = {
aaa: {
init: function () {
console.log("aaa");
},
},
bbb: {
init: function () {
console.log("bbb");
},
},
};
function fn(type: keyof typeof obj) {
obj[type].init();
}
fn("aaa");
希望有所帮助!
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容