Variables 如何在typescript中只初始化一次全局变量
我需要使“tokens”成为一个全局变量,它将在第一次调用时使用init()函数初始化 问题1。如何使用init()初始化变量?在TypeScript中初始化全局变量的最佳实践是什么 问题2。由于此变量是从json文件初始化的,如何使其在应用程序的生命周期内仅初始化一次?因此,如果我在不同的文件中导入这个变量,我不想再次读取json文件Variables 如何在typescript中只初始化一次全局变量,variables,typescript,global,Variables,Typescript,Global,我需要使“tokens”成为一个全局变量,它将在第一次调用时使用init()函数初始化 问题1。如何使用init()初始化变量?在TypeScript中初始化全局变量的最佳实践是什么 问题2。由于此变量是从json文件初始化的,如何使其在应用程序的生命周期内仅初始化一次?因此,如果我在不同的文件中导入这个变量,我不想再次读取json文件 export var tokens: Token[] = []; function init() { if (tokens) return; // a
export var tokens: Token[] = [];
function init() {
if (tokens) return; // already initialized
let tokensJson = fs.readFileSync("./lib/data/tokens.json", "utf8");
let tokensData = JSON.parse(tokensJson);
for (var i = 0; i < tokensData.length; i++) {
tokens.push(new Token(tokensData[i].name, tokensData[i].type));
}
}
导出var令牌:令牌[]=[];
函数init(){
if(令牌)返回;//已初始化
让tokensJson=fs.readFileSync(“./lib/data/tokens.json”,“utf8”);
让tokensData=JSON.parse(tokensJson);
for(var i=0;i
客户端代码:
文件1.ts
import { tokens } from "./tokens";
for (var i = 0; i < tokens.length; i++)
...
从“/tokens”导入{tokens};
for(var i=0;i
文件2.ts
import { tokens } from "./tokens";
for (var i = 0; i < tokens.length; i++)
...
从“/tokens”导入{tokens};
for(var i=0;i
如果您能给我一个创建全局或静态模块变量的想法或最佳模式,我将非常感激。这些变量将被初始化一次,但可以从TypeScript中的不同文件中使用。模块的顶级代码将在第一次加载模块时执行一次。至少CommonJS模块是这样,但我认为其他类型也是这样 如果第二次导入模块,模块定义中的脚本将不会再次执行,并且将重用第一次运行返回的导出 这意味着你可以:
export var tokens: Token[] = [];
function init() {
let tokensJson = fs.readFileSync("./lib/data/tokens.json", "utf8");
let tokensData = JSON.parse(tokensJson);
for (var i = 0; i < tokensData.length; i++) {
tokens.push(new Token(tokensData[i].name, tokensData[i].type));
}
}
init()
export var tokens =
JSON.parse(fs.readFileSync("./lib/data/tokens.json", "utf8"))
.map(td => new Token(td.name, td.type));