如果我想使用节点8编译源代码,那么打印的typescript配置是什么?
大多数教程使用以下tsconig.json:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs"
}
}
Run Code Online (Sandbox Code Playgroud)
但现在我发现,并非所有可用功能都受支持.例如,['foo'].includes('bar')抛出错误:类型'string []'上不存在属性'includes'.
我发现一个问题,解决这个问题.解决方案是使用lib es7.我可以覆盖默认的libs:"lib": ["es7"]
但是我不确定这是否是节点8的最佳配置 - 是否有更多不受该lib支持的功能?是否定义了很多功能?
所以我的问题是:什么是最好的配置target,lib并且module如果我想使用节点8?
我该如何配置 TypeScript 才能利用 Node.js 18 中的所有最新功能?具体来说,我想知道如何获得对 ESM 的全面支持,以及如何使用 ES2021/ES2022 中引入的所有最新语法和函数。
随着 Node.js 更新了对 ES2020 的支持并添加了对 ES 模块的支持,如何配置 TypeScript 以输出利用所有这些新功能的 JavaScript 代码?
如何将node-fetch包导入到我使用typescript. 我尝试了很多方法......现在我正在:
const fetch = (...args) =>
import("node-fetch").then(({ default: fetch }) => fetch(...args));
Run Code Online (Sandbox Code Playgroud)
但我有两个错误:
Cannot redeclare block-scoped variable 'fetch'.
Run Code Online (Sandbox Code Playgroud)
和
A spread argument must either have a tuple type or be passed to a rest parameter.
Run Code Online (Sandbox Code Playgroud)
当我更改const fetch =为任何其他名称时,例如const fetchIt =它修复了第一个错误,但是......我真的必须更改它吗?如何node-fetch以正常方式导入包,我可以使用fetch()方法?在 React 中我只是做
import fetch from 'node-fetch';
Run Code Online (Sandbox Code Playgroud)
一切都很好......为什么在node项目中如此困难?
有没有人知道Node.js v10.x需要哪些目标/库来使用没有生成器的内置async/await?我看到很多节点8但没有节点10.
我还是找不到合适的答案."target"选项定义了结果将在哪个版本的Javascript上运行."lib"选项在任何地方都不太清楚.似乎它是一种更精细的方式来描述目标环境,但是它似乎很奇怪它会影响你在.ts源文件中写的内容.认为TS是什么作为JS的超集,那么为什么它会影响,例如,Promis()是否可用?这似乎不仅定义了目标,还影响了Typescript中可用的功能.有人可以清楚地或直接解释答案(在typescriptlang.org或我看过的书中都没有,例如,"指定要包含在编辑中的库文件",这绝对没有解释
Node.js 16 最近发布,带来了对 ES2021 的更新支持和对 ES 模块的稳定支持,如何配置 TypeScript 以输出利用所有这些新功能的 JavaScript 代码?
我希望我可以在 TypeScript 中获得堆栈跟踪。我似乎只看到最底层的函数名称。我在 Windows 10 (1803) 上使用 Node.js v12.4.0。
这是代码:
async function thrower() {
throw new Error("test");
}
async function level1() {
return await thrower();
}
async function level2() {
return await level1();
}
async function level3() {
return await level2();
}
async function main() {
try {
await level3();
} catch(err) {
console.warn("main error", err);
}
}
console.log("node version", process.version);
main().then(() => {
console.log("all done " + __filename);
}).catch((err) => {
console.error("Something went wrong in here :(", __filename, err); …Run Code Online (Sandbox Code Playgroud)