使用TypeScript编写Mongoose Schema时遇类型错误求助
TypeScript下Mongoose Schema数组字段类型错误的解决方法
当你在TypeScript中定义Mongoose Schema时,数组字段直接使用type: Array会触发类型不兼容错误,核心原因是Mongoose需要明确数组元素类型,才能与你定义的TypeScript接口做匹配校验。
错误根源
你的ISchema接口中,counters和uniqueCounters被定义为string[]类型,但Schema里写type: Array会被Mongoose推断为Mixed类型,和string[]类型不匹配,导致TypeScript抛出类型错误。
解决方法
将数组字段的type改为[String],明确指定数组元素为字符串类型,这样就能和接口的string[]对应上,同时默认值[]也会被正确推断为string[]而非never[]。
修正后的完整代码
import { Schema, model } from "mongoose"; interface ISchema { guildId: string; counters: string[]; uniqueCounters: string[]; } const schema = new Schema<ISchema>({ guildId: { type: String, required: true, }, counters: { type: [String], default: [], }, uniqueCounters: { type: [String], default: [], }, }); export default model("Counting", schema);
补充说明
Mongoose中定义数组类型的标准写法是[元素类型构造函数],比如[Number]对应number[]、[Object]对应对象数组等。这种写法能让TypeScript准确校验Schema与接口的类型一致性,避免类型不兼容问题。
内容的提问来源于stack exchange,提问作者Fynn T
相关产品推荐
相关产品推荐

