Office-js不显示属性

我试图复制一个关于创build一个Excel加载项的教程,当Visual Studio的IntelliSense出现问题时。 我正在写这个代码:

function updateStocks() { Excel.run(function (ctx) { var **range** = ctx.workbook.names.getItem("Stocks") 

在这一步,一切都很好,但在getItem ,我试图添加.getRange() ,此时IntelliSense无法理解与我的variablesrange有关的任何事情。

截图

真正“有趣”的是,即使没有显示属性,当我手动编写教程的代码时,代码也不会错误地执行。

为什么会发生这种行为,我该如何纠正?

你能看到智能感知其他types的.run ? 也就是说,你有什么东西可以从指定的项目中获得范围? 如果您要获得不同的范围(例如, context.workbook.getSelectedRange() ),那么您是否获得了IntelliSense?

这可能与CDN意外地删除了namedItem.getRange方法(这是唯一受到影响的方法,并且已经采取措施确保我们将来会捕获这些方法)相关。 请参阅“ 无法从定义的名称获取范围 ”。 几周前CDN已经被修补,但JS IntelliSense文件(“VSDOC”)可能没有。 如果是这样的话,这是一个即时解决问题的时间点,因为CDN的新部署在VSDOC和其他地方都有getRange方法。

FWIW,你可能仍然遇到JS IntelliSense引擎的限制(很多,不幸的是:例如,试图跨Promise传递值,或者将API对象作为parameter passing给函数)。 唯一真正好的解决方法是使用TypeScript,它允许您声明性地向编译器/ IntelliSense引擎声明“我知道这个types是Excel.Range!” ) – 并提供了一些其他的好东西, async/await是一个非常重要的。 我个人认为,如果你真的想要一个“总理”的Office.js编码经验,TypeScript是要走的路。 为此,我介绍了如何在我的书“使用Office.js构buildOffice加载项”中使用TypeScript (完全公开,我是作者;但是我有很多读者评论资源的有用性给他们)。 这本书是非常面向TypeScript的,IntelliSense是其中一个原因(和async/await并成为主要的其他人) – 虽然我也提供了一个附录,我描述了完成相同的Office.js任务。 开始使用TypeScript只需要一点点的努力,一旦你做了,我不认为你会回头。