Javascript 我可以声明应用程序范围的常量吗?
我有一个类应该只存在一次,但其他类需要这个实例。我应该显式地将它传递给每个构造函数(方法1),还是只实例化一次并导出这个变量(方法2)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
//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
导出对象文本即可。