我试图在TypeScript中创建一个特定长度的数组,但只要我在生产模式下运行我的应用程序(也称为缩小版),生成的数组长度就会减少一.具体来说:当我 run 时

console.log(Array(3));

在开发模式下,我得到(3) [empty x 3],但在构建和运行生成的文件后,我得到(2) [empty x 2].

我正在运行下一个.js应用程序(版本12.2.0),带有标准构建和启动命令(next devnext buildnext start).

有人知道为什么会这样吗?

繁殖的最小步骤

  1. 使用默认值在空目录中运行npx create-next-app@latest
  2. /pages/index.js中,在return语句之前添加console.log(new Array(3))
  3. 在localhost:3000上运行yarn dev以获得输出(3) [empty x 3]
  4. 在localhost:3000上运行yarn build && yarn start以获得输出(2) [empty x 2]

推荐答案

这似乎与SWC Minification有关,SWC MinificationArray(3)转换为[,,](运行console.log([,,])输出(2) [empty x 2]).

正在有SWC minify feedback discussion人报告此类问题.


您可以在next.config.js中禁用swcMinify.

module.exports = {
    swcMinify: false
}

或者,保持swcMinify处于启用状态,但在修复之前,请使用类似以下内容.

Array.from({ length: 3 })

Typescript相关问答推荐

Typescript自定义键映射

如何将类型从变量参数转换为返回中的不同形状?

为什么tsx不判断名称中有"—"的属性?'

material 表不渲染任何数据

泛型类型联合将参数转换为Never

Angular 15使用react 式表单在数组内部创建动态表单数组

TypeScrip:来自先前参数的参数中的计算(computed)属性名称

Angular 17子路由

AngularJS服务不会解析传入的Json响应到管道中的模型

为什么&;(交集)运算符会删除不相交的属性?

如何在方法中正确地传递来自TypeScrip对象的字段子集?

在Mac和Windows上运行的Web应用程序出现这种对齐差异的原因是什么?(ReactNative)

复选框Angular 在Ngfor中的其他块中重复

在Reaction中折叠手风琴

有没有什么方法可以使用ProvideState()提供多个削减器作为根减减器

TypeScript:如何使用泛型和子类型创建泛型默认函数?

什么';是并类型A|B的点,其中B是A的子类?

JSX.Element';不可分配给类型';ReactNode';React功能HOC

为什么过滤器不改变可能的类型?

如何将元素推入对象中的类型化数组