Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以声明应用程序范围的常量吗?_Javascript_Typescript - Fatal编程技术网

Javascript 我可以声明应用程序范围的常量吗?

Javascript 我可以声明应用程序范围的常量吗?,javascript,typescript,Javascript,Typescript,我有一个类应该只存在一次,但其他类需要这个实例。我应该显式地将它传递给每个构造函数(方法1),还是只实例化一次并导出这个变量(方法2) //foo.ts(共享类) 福班{ // ... } 方法1: //bar.ts(使用Foo的类之一) 分类栏{ 构造函数(foo:foo){ // ... } } 方法2: //包含实例化的文件(如何命名?) 从“/Foo”导入{Foo}; export const foo=新foo(); //bar.ts 从“/theFileContainingThe

我有一个类应该只存在一次,但其他类需要这个实例。我应该显式地将它传递给每个构造函数(方法1),还是只实例化一次并导出这个变量(方法2)

//foo.ts(共享类)
福班{
// ...
}
方法1:

//bar.ts(使用Foo的类之一)
分类栏{
构造函数(foo:foo){
// ...
}
}
方法2:

//包含实例化的文件(如何命名?)
从“/Foo”导入{Foo};
export const foo=新foo();
//bar.ts
从“/theFileContainingTheInstantiation”导入{foo};
分类栏{
//使用foo
}

我知道不建议使用全局变量,但我认为方法2要好得多,因为我不必为每个类构造函数添加参数,并且可以保证唯一的实例化(我不必确保向每个类传递唯一的实例)。

使用只读属性

export class Foo {
    readonly myReadOnlyProperty = 1;
}
并将其输出。要读它,就做吧

import {Foo} from './foo';
var cfoo = new Foo();
console.log(cfoo.myReadOnlyProperty) // 1
您还可以导入类。首先导出
foo
,并添加一些测试方法

export class Foo {
    readonly myReadOnlyProperty = "Say";
    hello() {
        return "Hello,";
    }
}
然后在需要
foo
的文件中。你需要扩展这个类

import {Foo} from './foo'; // we get foo from other file
class Bar extends Foo { // we extend foo with our new class to get it's methods
  world(){
    let val = this.hello(); // here you can access foo's methods
    console.log(this.myReadOnlyProperty + " " + val + " world"); // Say Hello, world
  }
}
let funct = new Bar();
funct.world(); // run it

如果您只有一个实例,那么绝对没有理由使用
。只需从
foo.js
导出对象文本即可。