You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript报错:never类型无法分配给Promise数组等目标类型

解决 "Type never is not assignable to promise array, boolean and error as value" 类型错误

核心原因

手动指定的OrderQueryResult类型与PrismafindMany返回的实际类型不匹配,导致TypeScript推断出never类型,触发赋值错误。

具体修复方案

1. 移除手动类型断言,让Prisma自动推导返回类型

Prisma会根据select的字段自动生成精确的返回类型,手动指定类型如果和实际结构不一致就会引发冲突。修改代码:

// 移除手动指定的 OrderQueryResult 类型
const allOrders = await prisma.orders.findMany({
  where: whereClause,
  select: {
    id: true,
    awbNumber: true,
    ChannelOrder_Id: true,
    deliveryPartner: true,
    shippingDate: true,
    status: true,
    Packages : {
     select: {
      productName: true,
     }
    },
    buddyShield : {
      select: {
        remarks: true,
        buddyShieldUploadProof: true,
        rtoStarted: true,
      }
    },
    Users: {
      select: {
        fullname: true,
      }
    },
  }
});

2. 对齐OrderSecondSchema与Prisma返回结构

检查并调整自定义类型,确保和select的字段完全匹配:

  • 确认OrderStatus是与Prisma生成的枚举一致的类型(可从@prisma/client导入)
  • 如果Users关联是可选的,需将Users: User改为Users: User | null
  • 确保所有嵌套字段的结构和select结果严格一致

3. 为函数指定明确的返回类型

先让TypeScript自动推导返回类型,再将其提取为显式类型:

// 先注释返回类型,鼠标悬停在函数名上获取自动推导的类型,再定义
type GetFilteredOrdersResult = {
  orders: OrderSecondSchema[];
  totalPages: number;
  currentPage: number;
  totalOrders: number;
};

export async function getFilteredOrders(filters: OrderFilters): Promise<GetFilteredOrdersResult> {
  // ... 现有逻辑
}

4. 确保userIdString的有效性

如果getCurrentUser()可能返回null/undefined,需添加校验,避免无效查询条件导致类型错误:

const userIdString = getCurrentUser();
if (!userIdString) {
  throw new Error("用户未认证");
  // 或返回空结果:
  // return { orders: [], totalPages: 0, currentPage: page, totalOrders: 0 };
}

5. 替换any类型为Prisma专属类型

避免使用any定义whereClause,改用Prisma提供的类型确保查询条件合法:

import { Prisma } from '@prisma/client';

const whereClause: Prisma.OrdersWhereInput = {
  status: {
    in: ['RTO_IN_TRANSIT', 'RTO_DELIVERED'] as const,
  },
  usersId: userIdString,
};

内容的提问来源于stack exchange,提问作者Neel Chalke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 05:07:21