我想了解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只是认为签名是正确的。如果你以错误的方式使用你的函数,你只会得到一个运行时错误