添加没有 typing 的第三方库

请注意,这仅适用于高达 1.0.0-beta.10 版本的 angular-cli!

某些库或插件可能没有 typing。如果没有这些,TypeScript 就无法对它们进行类型检查,从而导致编译错误。仍然可以使用这些库,但与导入的模块不同。

  1. 在页面上包含对库的脚本引用(index.html

    <script src="//cdn.somewhe.re/lib.min.js" type="text/javascript"></script>
    <script src="/local/path/to/lib.min.js" type="text/javascript"></script>
    
    • 这些脚本应添加全局(例如 THREEmapbox$ 等)或附加到全局
  2. 在需要这些的组件中,使用 declare 初始化与 lib 使用的全局名称匹配的变量。这让 TypeScript 知道它已经被初始化了。 1

    declare var <globalname>: any;
    

    有些 lib 附加到 window,需要扩展才能在应用程序中访问。

    interface WindowIntercom extends Window { Intercom: any; }
    declare var window: WindowIntercom;
    
  3. 根据需要在组件中使用 lib。

    @Component { ... }
    export class AppComponent implements AfterViewInit {
        ...
        ngAfterViewInit() {
            var geometry = new THREE.BoxGeometry( 1, 1, 1 );
            window.Intercom('boot', { ... }
        }
    }
    
    • 注意:某些库可能与 DOM 交互,应该在适当的组件生命周期方法中使用。