TypeScript变量在运行时工作,但在编译作用域期间中断

TypeScript变量在运行时工作,但在编译作用域期间中断,typescript,visual-studio-2015,Typescript,Visual Studio 2015,我试图在一个TypeScript函数中引用一个变量,该函数中断编译,但在运行时工作正常。这一行中断编译: console.log( EXP_SETTINGS.site.userInterface.showPostbackStatusDelay ); 我之所以知道它在运行时有效,是因为我做了以下工作: 注释掉了冒犯的行 在VS2015 Pro中编译成功 找到TS compile生成的js文件,名为JSUI.js 将有问题的行插入到精确的对应位置,保存 在Chrome中运行我的网页-无错误-向控

我试图在一个TypeScript函数中引用一个变量,该函数中断编译,但在运行时工作正常。这一行中断编译:

console.log( EXP_SETTINGS.site.userInterface.showPostbackStatusDelay );

我之所以知道它在运行时有效,是因为我做了以下工作:

  • 注释掉了冒犯的行
  • 在VS2015 Pro中编译成功
  • 找到TS compile生成的js文件,名为JSUI.js
  • 将有问题的行插入到精确的对应位置,保存
  • 在Chrome中运行我的网页-无错误-向控制台发出正确的值

  • 所以…很明显,我需要的变量是可用的,并且在全局范围内,但是TS在编译期间会崩溃。如何解决此问题?

    如果您确定该变量对您可用,您可以在文件中的某个位置(在基本级别)声明它:

    declare const EXP_SETTINGS: any; // Replace any with appropriate type
    
    这将允许您引用它而无需typescript抱怨。如果您有更具体的类型,我建议您使用它而不是
    any


    或者,如果您只在一个位置使用
    EXP\u设置
    变量,或者您不想包含该变量的类型,您可以使用ts ignore注释手动使编译器静音:

    // @ts-ignore
    console.log( EXP_SETTINGS.site... );
    

    变量来自哪里?听起来您需要为它添加键入。必须在基本级别,因此不在任何函数/类/etc中,而是在文件的根级别。此外,如果您仅在一个位置使用该变量,则在调用
    控制台的正上方添加注释
    /@ts ignore
    。log
    可能是另一个好选项。