我有一个只应存在一次的类,但其他类则需要此实例。我应该将其显式传递给每个构造函数(方法1),还是可以实例化一次并导出该变量(方法2)?
// foo.ts (the shared class)
class Foo {
// ...
}
方法1:
// bar.ts (one of the classes using Foo)
class Bar {
constructor(foo: Foo) {
// ...
}
}
方法2:
// a file containing the instantiation (how to name it?)
import {Foo} from './foo';
export const foo = new Foo();
// bar.ts
import {foo} from './theFileContainingTheInstantiation';
class Bar {
// use foo
}
我知道不建议使用全局变量,但我认为方法2更好,因为我不必在每个类构造函数中添加参数,并且可以保证唯一的实例化(我不必确保将唯一的实例传递给每个类)。
答案 0 :(得分:1)
使用只读属性
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