我有一个基于Yeoman Office Add-in Generator生成的React和TypeScript脚手架的Outlook Web加载项目。但是,intellisense(我使用Webstorm)似乎缺少Office.context.mailbox.item对象的几乎所有属性和方法。例如只有body和dateTimeCreated,甚至没有主题和其他一些人!
我不确定这是Yeoman生成的文件的问题,还是别的(我对React来说很新)。下面是可用道具的截图,以及生成的index.tsx文件;我试图访问Office.initialize函数中的邮件项属性。
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { AppContainer } from 'react-hot-loader';
import { initializeIcons } from 'office-ui-fabric-react/lib/Icons';
import App from './components/App';
import './styles.less';
import 'office-ui-fabric-react/dist/css/fabric.min.css';
initializeIcons();
let isOfficeInitialized = false;
const title = 'My Outlook React Add-in';
const render = (Component) => {
ReactDOM.render(
<AppContainer>
<Component title={title} isOfficeInitialized={isOfficeInitialized} />
</AppContainer>,
document.getElementById('container')
);
};
/* Render application after Office initializes */
Office.initialize = () => {
isOfficeInitialized = true;
let item = Office.context.mailbox.item;
emailSubject = item.???
render(App);
};
/* Initial render showing a progress bar */
render(App);
if ((module as any).hot) {
(module as any).hot.accept('./components/App', () => {
const NextApp = require('./components/App').default;
render(NextApp);
});
}
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
&#13;
答案 0 :(得分:0)
正如它所发生的那样,我昨天正在与一位同事讨论如何使d.ts文件更好地用于Outlook。
我刚刚向DefinitelyTyped发送了一个pull请求(它也生成了@ types / office-js包):https://github.com/DefinitelyTyped/DefinitelyTyped/pull/26016。 它应该很快合并。
如果您愿意,在此期间,您可以复制生成的d.ts文件并使用它。事实上,如果您的项目有node_modules/@types/office-js
(我认为它确实如此?),您可以在本地文件系统上手动更新它,并使用此处的副本(来自拉取请求):https://raw.githubusercontent.com/Zlatkovsky/DefinitelyTyped/235072eab26a40527778755dd477cce3bcc494ae/types/office-js/index.d.ts