Javascript 使用facebook登录让typescript为Angular 2项目工作

Javascript 使用facebook登录让typescript为Angular 2项目工作,javascript,angularjs,typescript,Javascript,Angularjs,Typescript,我正试着用Angular 2和typescript开始运行。到目前为止一切都很好,但是我在使用Facebook登录信息时遇到了一些麻烦。我找到了一个项目。在此示例中,它们具有以下连接器: fbconnector.ts export class FBConnector { constructor(appID: string) { if (!window.fbAsyncInit) { console.log('define');

我正试着用Angular 2和typescript开始运行。到目前为止一切都很好,但是我在使用Facebook登录信息时遇到了一些麻烦。我找到了一个项目。在此示例中,它们具有以下连接器:

fbconnector.ts

export class FBConnector {

    constructor(appID: string) {
        if (!window.fbAsyncInit) {
            console.log('define');
            window.fbAsyncInit = function() {
                FB.init({
                    appId: appID,
                    xfbml: true,
                    version: 'v2.5'
                });
            };
        }
    }

    initFB() {
        var js: any,
            id = 'facebook-jssdk',
            ref = document.getElementsByTagName('script')[0];

        if (document.getElementById(id)) {
            return;
        }

        js = document.createElement('script');
        js.id = id;
        js.async = true;
        js.src = "//connect.facebook.net/en_US/sdk.js";

        ref.parentNode.insertBefore(js, ref);
    }

}
当我编译我的typescript时,会出现以下两个错误:

error TS2339: Property fbAsyncInit does not exist on type 'Window'.
error TS2304: Cannot find name 'FB'.
考虑到这一点,typescript需要定义这些变量。我想这部分是因为我对typescript还不熟悉,但我不知道该怎么做。我应该做一个自定义打字文件吗?或者我应该使用变通方法?(例如在窗口前面添加?)


提前谢谢

最终找到了答案,DefinitelyTyped拥有Facebook Javascript SDK()的类型定义

我所要做的就是添加文件并在文件顶部用以下行引用它:


//

您可以通过以下方式安装打字:
打字安装-SG dt~fbsdk

您可以提供一些详细信息吗,您在上面的哪个文件上添加了代码?附加的链接是deadI installed typings,如上所述,Sublime 3不再突出显示错误。但是,ng服务器不断抛出相同的错误“类型“Window”上不存在属性“FBAsyninit”。