我正在尝试使用 Salesforce JavaScript SDK在 Typescript 项目中。
它有一个名为 canvas-all.js 的文件.它有一个名为 Sfdc
的变量。
我们有一些成功使用它的 javascript。要使用它,只需将其添加到 index.html
<script type="text/javascript" src="./plugins/canvas-sdk/js/canvas-all.js"></script>
但是 Typescript 并不知道它。 (说 找不到名称 Sfdc
)
我试着像这样导入它:
import * as canvas from '../plugins/canvas-sdk/js/canvas-all';
但这给出了错误:
Cannot find module '../plugins/canvas-sdk/js/canvas-all'.
我在想我需要一个 .d.ts
为此,但我找不到,而且我也没有成功地尝试制作一个。
我看过这篇文章:https://www.stevefenton.co.uk/2013/01/complex-typescript-definitions-made-easy/但它似乎没有帮助。
那篇文章中的第 2 步适用于那些只想解锁 Typescript 的人(我的场景)。但它所说的只是declare var amazingToolkit: any
(它没有关于将它放在哪里或如何让它被你需要使用它的文件中的 typescript 识别的任何上下文。)
我不需要智能感知。我只希望 Sfdc
被视为一个 any
,这样当我做这样的事情时 Typescript 就会编译:
Sfdc.canvas.client.refreshSignedRequest( .....
所以这是我的问题:
如何为具有一堆函数的 JavaScript 文件创建最简单的 Typescript 定义文件 (.d.ts
)?
我如何将它“连接”到 JavaScript (canvas-all.js
) 文件(没有模块)并导入到我的 Typescript (myApplicationFile.js) 中? ts
) 文件?
最佳答案
好的,这就是有效的方法。我制作了一个名为 canvas-all.d.ts
的文件并将其放入其中:
declare var Sfdc: any;
重新构建后,错误消失了。我以前试过这个,但没有完全重建。如果没有重建,Visual Studio 看不到它。
关于javascript - 尽可能创建最简单的 typescript 定义文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34539181/