TypeScript 中缺少 Office.js 邮件对象属性

IT技术 reactjs office-js
2021-04-29 07:07:44

我有一个 Outlook Web 插件项目,它基于 Yeoman Office 插件生成器生成的 React 和 TypeScript 脚手架。但是,智能感知(我正在使用 Webstorm)似乎缺少 Office.context.mailbox.item 对象的几乎所有属性和方法。例如,只有 body 和 dateTimeCreated,甚至没有主题和其他一堆!

我不确定这是否是 Yeoman 生成的文件的问题,还是其他问题(我对 React 很陌生)。下面是可用props的屏幕截图,以及生成的 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);
    });
}
<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>

1个回答

碰巧,我昨天刚和同事讨论如何使 d.ts 文件更好地用于 Outlook。

我刚刚向DefinitelyTyped(它也生成@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