Sof*_*mur 5 javascript namespaces type-declaration typescript reactjs
我有一个用 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>
Run Code Online (Sandbox Code Playgroud)
我还有一个类型声明文件,frontend/src/defines/analyzejs-v1.d.ts如下所示:
declare function f1(): string;
declare function f2(): string;
...
Run Code Online (Sandbox Code Playgroud)
结果,在网站的代码中,我可以直接调用f1()使用analyzejs-v1.js。
现在,我想添加该库的另一个版本analyzejs-v2.js。在网站的某些部分,我想f1()调用analyzejs-v1.js; 在网站的某些部分,我想f1()调用analyzejs-v2.js. 所以我想我需要向这些不同的版本添加诸如v1和之类的命名空间v2以避免冲突。然后,我就可以打电话v1.f1()和v2.f2()。
我尝试修改frontend/src/defines/analyzejs-v1.d.ts如下:
declare namespace v1 {
function f1(): string;
function f2(): string;
...
}
Run Code Online (Sandbox Code Playgroud)
在网站的代码中,我尝试使用v1.f1().
编译没有出现任何错误。但是,运行该网站并使用功能调用时,我在:v1.f1()上返回了错误。v1.f1()Unhandled Rejection (ReferenceError): v1 is not defined
有谁知道如何向这样的库添加命名空间?
如果您像这样在代码中导入这些文件:
import analyzejs-v1 from '/lib/analyzejs-v1.js'
import analyzejs-v2 from '/lib/analyzejs-v2.js'
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您可以在不同的对象下调用它们:
analyzejs-v1.f();
analyzejs-v2.f();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |