在打字稿中Office.initialize

时间:2018-06-22 07:01:24

标签: typescript office-js

我有一个Office加载项,我想在其中放置Office.initialize方法以确保在开始使用Office API之前初始化Office。所以我输入了以下代码:

import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { AppView } from './View/AppView';

(function () {

    Office.initialize = () => {
        console.log("Office initialized");
        renderApp();
    }

    const renderApp = () => {

        ReactDOM.render(
            <AppView/>,
            document.getElementById('root')
        );
    }
})();

我在对应的cshtml文件中提供了Office CDN URL。但是在此文件中,我收到错误消息“ TS2304:找不到名称“ Office”。

如果我使用Yo Office生成了一个示例add IN项目,那么我没有错误,但是在这里我始终遇到此错误。有人可以告诉我我想念什么吗?

2 个答案:

答案 0 :(得分:2)

您是否完成了“ npm install -save-dev @ types / office-js”?那应该给您正确的包裹。 请注意,您不需要在代码中导入任何内容即可正常工作,因为Office在全局级别声明了其变量。

答案 1 :(得分:0)

消息错误TS2304:找不到名称'Office'可以使用如下的 main.ts 文件解决:

/// <reference path="../node_modules/@types/office-js/index.d.ts" />
import { enableProdMode } from '@angular/core';

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';

import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

const timer = {};

function startInterval(timer) {
  timer.id = setInterval(() => {
    if (Office !== undefined) {
      Office.initialize = (reason) => {
        platformBrowserDynamic().bootstrapModule(AppModule).catch(error => console.error(error));
      };
      stopInterval(timer.id);
    }
  }, 1000);
}

function stopInterval(id) {
  clearInterval(id);
}

startInterval(timer);

它将适用于使用 Angular 而不是 generator-office 软件包( yo office)创建新的 Office外接程序的人员)。

希望对您有帮助!