我正在尝试在Typescript项目中使用Salesforce JavaScript SDK。
它有一个名为canvas-all.js的文件。这有一个名为Sfdc
的变量。
我们有一些成功使用此功能的JavaScript。要使用它,只需将其添加到index.html
<script type="text/javascript" src="./plugins/canvas-sdk/js/canvas-all.js"></script>
但是Typescript并不知道这件事。 (说Cannot find name Sfdc
)
我试着像这样导入它:
import * as canvas from '../plugins/canvas-sdk/js/canvas-all';
但是这给出了错误:
找不到模块'../ 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 Definition文件(.d.ts
)?
如何将其“连接”到JavaScript(canvas-all.js
)文件(没有模块)并导入到我的Typescript(myApplicationFile.ts
)文件中?
答案 0 :(得分:3)
好的,这就是有效的。我创建了一个名为function permute( str, i, n ) {
if ( i == n ){
console.log(str);
} else {
for ( var j = i; j < n; j++) {
str = swap( str, i, j );
permute( str, i+1, n );
str = swap( str, i, j ); // backtrack.
}
}
}
// function to swap the char at pos $i and $j of $str.
function swap( str, i, j ) {
str = str.split("");
var temp = str[i];
str[i] = str[j];
str[j] = temp;
return str.join("");
}
var str = "hey";
permute( str, 0, str.length ); // call the function.
的文件并将其放入其中:
num = []
for i in range(2, numRows):
row = []
for j in range(i - 1):
row.append(sum(num[-1][j:j + 2]))
num.append([1] + row + [1])
重新构建后,错误消失了。我之前尝试过这个,但没有完全重建。没有重建,Visual Studio没有看到它。