Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Visual Studio 2017 Office插件TypeScript项目中实现Polyfill承诺_Typescript_Visual Studio 2017_Es6 Promise_Office Js_Polyfills - Fatal编程技术网

如何在Visual Studio 2017 Office插件TypeScript项目中实现Polyfill承诺

如何在Visual Studio 2017 Office插件TypeScript项目中实现Polyfill承诺,typescript,visual-studio-2017,es6-promise,office-js,polyfills,Typescript,Visual Studio 2017,Es6 Promise,Office Js,Polyfills,我在Office外接程序中使用TypeScript,我想特别使用异步/等待函数。项目无法使用“TS2468 TypeScript找不到全局值“Promise”进行编译 我在这里读到,我必须为Promise创建一个polyfill,但到目前为止,我还没有弄清楚如何让polyfill在Visual Studio 2017中工作。我正在尝试使用core js,并已使用npm install core js将其安装到项目中。我可以看到core js安装在node_模块下。npm还创建了一个package

我在Office外接程序中使用TypeScript,我想特别使用异步/等待函数。项目无法使用“TS2468 TypeScript找不到全局值“Promise”进行编译

我在这里读到,我必须为Promise创建一个polyfill,但到目前为止,我还没有弄清楚如何让polyfill在Visual Studio 2017中工作。我正在尝试使用core js,并已使用npm install core js将其安装到项目中。我可以看到core js安装在node_模块下。npm还创建了一个package.json文件,其中包含以下内容:

{
“需要”:对,
“lockfileVersion”:1,
“依赖项”:{
“核心js”:“^2.5.3”
}
}

这是我的tsconfig.json文件:
{
“编译器选项”:{
“skipLibCheck”:正确,
“moduleResolution”:“节点”
},
“排除”:[
“节点_模块”
]
}

我有
require('core-js')在FunctionFile.ts顶部声明,但错误仍然存在

我遵循了这个问题中提供的指导:

使用基于此链接创建的相同加载项:

我在测试类型脚本文件中添加了以下内容:

(function () {
    Office.initialize = function (reason) {
        (window as any).Promise = OfficeExtension.Promise;
    };
})();

async function test() {
    return 'hello';
}

在构建项目时,我仍然会遇到同样的错误。“TS2468 TypeScript找不到全局值‘Promise’。”我还使用
(窗口为任意窗口)进行了尝试。Promise=OfficeExtension.Promise位于顶部。

似乎可以通过将以下
lib
属性添加到
compilerOptions
对象的tsconfig.json文件中来解决此问题:

"lib": [ "es5", "dom", "es2015.promise" ]
换句话说,更新ts.config文件的内容,如下所示:

{
  "compilerOptions": {
    "skipLibCheck": true,
    "moduleResolution": "node",
    "lib": [ "es5", "dom", "es2015.promise" ]
  },
  "exclude": [
    "node_modules"
  ]
}

@MichaelZlatkovsky Microsoft的可能副本的副本,使用基于此链接创建的相同加载项,我将以下内容添加到我的测试类型脚本文件:
(function(){Office.initialize=function(reason){(任何窗口).Promise=OfficeExtension.Promise;//如果需要初始化某些内容,可以在此处执行。};}();异步函数测试(){return'hello';}
我在构建项目时仍然会遇到相同的错误。“TS2468 TypeScript无法找到全局值‘承诺’。@J Allen——感谢您提出此问题。我们已经更新了文档,包括了关于在ts.config中包含
lib
属性的指导:。这正是我所需要的。工作得很有魅力。再次感谢金姆!很乐意帮忙。还有,我要向@MichaelZlatkovsky微软公司大喊一声,感谢你和我讨论了这件事……谢谢你,迈克尔@MichaelZlatkovsky Microsoft--仅供参考,将其添加到tsconfig文件确实解决了编译器的问题,但在运行时失败了。我通过将
添加到FunctionFile.html页面修复了这个问题。我不确定这是不是最好的方法,但现在对我来说很有效。