gpt4 book ai didi

javascript - 将命名空间分配给 src 库文件

转载 作者:行者123 更新时间:2023-12-04 16:50:42 25 4
gpt4 key购买 nike

我有一个用 ReactJS 制作的网站。网站调用库函数analyzejs由另一种编程语言生成。我只能调用这个库的函数;我不能修改这个库的很多内容。
到目前为止,我一直在使用该库的第一个版本:analyzejs-v1.js .为了实现这一点,在 frontend/public/index.html该网站,我有

<head>
<script src="/lib/analyzejs-v1.js"></script>
<!-- <script src="/lib/analyzejs-v2.js"></script> -->
</head>
<body>
<div id="root"></div>
</body>
我还有一个类型声明文件 frontend/src/defines/analyzejs-v1.d.ts如下:
declare function f1(): string;
declare function f2(): string;
...
结果,在网站的代码中,我可以直接调用 f1()使用 analyzejs-v1.js .
现在,我想添加另一个版本的库 analyzejs-v2.js .在网站的某些部分,我想调用 f1()analyzejs-v1.js ;在网站的某些部分,我想调用 f1()analyzejs-v2.js .所以我想我需要添加 namespace ,例如 v1v2到这些不同的版本以避免冲突。然后,我可以调用 v1.f1()v2.f2() .
我试图修改 frontend/src/defines/analyzejs-v1.d.ts如下:
declare namespace v1 {
function f1(): string;
function f2(): string;
...
}
在网站的代码中,我尝试使用 v1.f1() .
编译没有引发任何错误。但是,运行网站并使用调用 v1.f1() 的功能在 v1.f1() 上给我返回了一个错误: Unhandled Rejection (ReferenceError): v1 is not defined .
有谁知道如何将命名空间添加到这样的库中?

最佳答案

最好的方法是将 javascript 文件中的函数分组到类或对象中

// test.js
const testNamespace = {
print = () => console.log('print was called from test.js')
}
// test1.js
const anotherNamespace = {
print = () => console.log('print was called from test1.js')
}
现在您可以使用

anotherNamespace.print();
testNamespace.print();

关于javascript - 将命名空间分配给 src 库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69650521/

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