gpt4 book ai didi

javascript - typescript 生成冗余变量

转载 作者:搜寻专家 更新时间:2023-10-30 21:54:48 24 4
gpt4 key购买 nike

考虑以下 Typescript 代码:

module demoAppModule{
'use strict';

export module nest{
export var hello = function () {
alert('Hello!');
};
}
}

demoAppModule.nest.hello();

转译后我们有以下 javascript 代码:

var demoAppModule;
(function (demoAppModule) {
'use strict';

(function (nest) {
nest.hello = function () {
alert('Hello!');
};
})(demoAppModule.nest || (demoAppModule.nest = {}));
var nest = demoAppModule.nest;
})(demoAppModule || (demoAppModule = {}));

demoAppModule.nest.hello();

为什么会产生这条线?它伤害了我的眼睛。

var nest = demoAppModule.nest;

最佳答案

简答:需要在本地访问模块变量。例如

module demoAppModule{
'use strict';

export module nest{
export var hello = function () {
alert('Hello!');
};
}

// The following would not be possible without that line
console.log(nest.hello);
}

demoAppModule.nest.hello();

更长的答案:它类似于在模块之前添加的 var,例如注意 var x:

// TypeScript 
module x{export var foo;}
// Generated JavaScript
var x;
(function (x) {
x.foo;
})(x || (x = {}));

但是当你在一个模块内 + 导出一个模块时,需要将 var 添加到 outermodule.innermodule 所以你不需要做 var innermodule预先。您将它添加到 outermodule,然后创建一个局部变量以指向您可以在生成的 javascript 中看到的 innermodule:

// Notice var here 
var demoAppModule;
(function (demoAppModule) {
'use strict';

// Notice no var here
(function (nest) {
nest.hello = function () {
alert('Hello!');
};
})(demoAppModule.nest || (demoAppModule.nest = {}));
// Notice var assinged afterwards
var nest = demoAppModule.nest;

// The following would not be possible without that line
console.log(nest.hello);
})(demoAppModule || (demoAppModule = {}));

demoAppModule.nest.hello();

关于javascript - typescript 生成冗余变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18438575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com