从外部文件在打字稿中声明var获取ReferenceError:...未定义

Ziv*_*man 0 javascript variables typescript

我有以下打字稿文件->

module someModule {
declare var servicePort: string;

export class someClass{
constructor(){
  servicePort = servicePort || ""; //ERROR= 'ReferenceError: servicePort is not defined'
}
Run Code Online (Sandbox Code Playgroud)

也尝试在“ someClass”内部的功能之一上执行此操作->

someFunction = () => {
    if (servicePort && servicePort != '') { //ERROR - also servicePort is not defined
            //do something with servicePort 
        }
}
Run Code Online (Sandbox Code Playgroud)

如果我在js / html文件的某处定义var servicePort,它将可以使用,但是并非我的所有页面都包含servicePort var,因此我想毫无例外地从该变量中安全地获取值。我究竟做错了什么?

Rya*_*ugh 5

有时会定义一个变量,有时却没有定义一个变量,这是一个很大的代码味道,但是如果您确实想执行此操作,则需要使用以下方法来保护对该变量的访问typeof

if (typeof servicePort !== "undefined") {
   // safe to use servicePort here
}
Run Code Online (Sandbox Code Playgroud)

请注意,您将无法分辨出缺失变量与带有值的变量之间的区别undefined,但这就是生命。