gpt4 book ai didi

javascript - import 与 typescript 1.6 和 es6 语法的内联使用

转载 作者:搜寻专家 更新时间:2023-10-30 22:02:49 25 4
gpt4 key购买 nike

我正在考虑更新一些旧的 js 库,我必须使用 ES6 约定来打字,但是我遇到了一个绊脚石。

所以在历史上,当我动态加载一个 JSON 文件时,我会做这样的事情:

this.someFunctionWhichDoesStuff = function() {
var config = require(theConfigDir); // theConfigDir was a variable
// ... other stuffs
}

这工作得很好,在某些情况下我也会动态地包含文件夹中的一些模块:

this.someFunctionWhichDoesStuff = function() {
var actualImplementationToUse = require(theDirectoryWithImplementation); // theConfigDir was a variable
// ... other stuffs
}

这使我能够根据早期的配置切换实现,并且效果很好。这里要注意的关键点是模块的解析器是变量而不是静态文本,并且它们在函数内部运行而不是在根级别。

考虑到这一点,我转向了 TS 中包含的 es6 样式模块,并意识到我不能执行上述操作,因为这是无效的语法:

public someFunctionWhichDoesStuff() {
import actualImplementationToUse from theDirectoryWithImplementation;
// ... other stuffs
}

这是有道理的,因为我知道 ES6 模块需要静态解析模块,所以我对此很满意,但是在 typescript 1.6 的世界中,我不确定如何将其解析为 var includedModule = require(theDirectory) ; 似乎无效,因为它不知道 require,这可以通过包含节点 js d.ts 文件来解决,但是我希望有人能否就新 ES6 世界的 future 发展方向提供一些指导?

最佳答案

sure I know I can do this, but is there a more es6 way of doing this? i.e if I use require I am locked into using require on all consumers (be it browser or node), I imagine there isn't but I just wanted to check before I went down this route.

ES6 规范 无论如何都没有指定模块加载器(SystemJS 只是一个示例非标准实现)并且大多数情况下您希望向下转换为 es5。所以使用 require 不是一个坏主意(特别是对于非 .ts/.js 文件)

关于javascript - import 与 typescript 1.6 和 es6 语法的内联使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33124036/

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