Angular如何将外部javascript库绑定到声明的var



我想了解Angular如何将声明的var解析为特定javascript库的机制。例如,我引用了一个第三方javascript库,并通过index.html:加载它

<html>
<head>
<script src="/assets/js/external.js"></script>
...
</html>

某些组件.ts

import ...
declare var functionA: any;
@Component({
selector: 'some-component',
templateUrl: 'some-component.html',
styleUrls: ['some-component.css']
})
export class SomeComponent { ... }

external.js必须有一个声明为functionA的函数才能正确解析吗?或者,当我在SomeComponent中定义对函数A的初始调用时,Angular是否通过匹配functionA的签名来解决它?我在哪里可以找到这些记录——我可能没有正确搜索。

external.js库可以全局公开其某些对象或函数。这意味着在加载库之后,您可以使用window.exportedFn()或仅使用exportedFn()从该页面上任何您喜欢的地方访问导出。这不是用函数污染全局的常见方法,所以需要告诉typescript导出的东西存在,并可能提供其签名。如果签名是错误的,您将不会得到任何编译时错误,因为它无论如何都没有链接。TS只是认为签名是正确的。如果你以错误的方式使用你的函数,你只会得到一个运行时错误

最新更新