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”` 如何定义类型,可以保证这里正常调用?

阅读量:15

点赞量:0

问AI
可以通过 "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"); 希望有所帮助!