当前位置: 首页 > 知识库问答 >
问题:

如何为类型创建文本值?

能修谨
2023-03-14

从继续https://stackoverflow.com/a/51132333/936293,为什么以下操作不起作用?

type MemberModel = mongoose.Document & {
  familyName: string,
  otherNames: string,
  email: string
}

function f(m: MemberModel):void { }

f1( { email: "abc@gmail.com" }); 

最后一行导致编译器错误:

“{email:string;}”类型的参数不可分配给“MemberModel”类型的参数。键入“{email:string;}”不可分配给类型“Document”。类型“{email:string;}”中缺少属性“increment”。

< code > { email:" ABC @ Gmail . com " } 不符合< code>MemberModel类型指定的形状吗?

在这种情况下,如何将合适的文字传递给 f?(目前,我想避免将 MemberModel 更改为类,因为我从模板继承了此代码。

共有1个答案

羊舌成周
2023-03-14

简单的答案是否定的,对象文字不符合该类型。它不符合,因为对象文字只有电子邮件字段。该类型需要满足两种猫鼬。文档有很多方法(包括增量,这是您得到的错误)以及您指定的所有字段都是必需的,因此即使我们只考虑该部分,它仍然无法工作,因为它缺少字段 familyName 和其他名称

您可以接收部分

type MemberModel = mongoose.Document & {
    familyName: string,
    otherNames: string,
    email: string
}

function f(m: Partial<MemberModel>): void { }

f({ email: "abc@gmail.com" }); 

不过,更正确的方法可能是阅读猫如何在此处定义模式和类。您可能正在寻找类似以下内容:

type MemberModel = mongoose.Document & {
    familyName: string,
    otherNames: string,
    email: string
}
var memberModelSchema = new mongoose.Schema({
    familyName: String,
    otherNames: String,
    email: String
});

var MemberModel = mongoose.model<MemberModel>('MemberModel', memberModelSchema);
function f(m: MemberModel): void { }

f(new MemberModel({ email: "abc@gmail.com" })); 

 类似资料:
  • 问题内容: 我有使用Maven创建jar文件的要求,但是需要使用“ foobar”扩展名将它们安装到存储库中,如果它们可以具有自己的打包类型,那么这很好,以便我们可以通过打包来识别这些工件。 我可以设置新的包装类型吗? 问题答案: 要做到像你描述,创建包装Maven项目 罐子 (如说在这里,因为不会有魔力的定义)。在src / main / resources / META-INF / plexu

  • 问题内容: 我需要使用与完全相同的方法创建一个类。 用Java做到这一点的最佳方法是什么? 我知道我不能照原样扩展String类。我没有在寻找需要复制的源代码的解决方案。例如,假设我需要名为的自定义类中的功能,该类具有相应的’myLength()`方法。 实施的最佳方法是什么? 我不是在寻找各种算法来找出字符串的长度,而是在重用的方法。现在,一旦我准备好上课,就可以在任何地方进行自定义操作了。 问

  • 问题内容: 我想创建我现有的swift类的类别,但是IDE中没有选择这样做的选项。 知道在快速项目中是否存在类别?还是如何在Swift项目中实现类似的功能? 问题答案: 在Swift中,您可以用来向现有的类,结构和枚举类型添加新功能。 它们在一些方面与Objective-C类别有所不同,主要是: 他们没有名字 您不需要显式导入扩展。如果定义扩展以将新功能添加到现有类型,则新功能将在该类型的所有现有

  • 问题内容: 我有一个Java应用程序,可以在其中将XSD类型映射到另一个具有相同类型的类型。现在,我需要拥有一个可以映射任何类型的anyType xsd。就像我们在Java中拥有Object类型一样,是否有可能在XSD中创建类似对象。 编辑:在复杂类型级别是可能的。 问题答案: 是的,有可能。类型是。这是一个例子: (摘自底漆) 这是一个更复杂的示例: (也从底漆开始-值得一看)

  • 问题内容: 如何创建泛型类型的数组?通用方法如何工作?它返回通用数组的副本。因此可以创建通用数组。但是如何?怎么能写一个类似的方法呢? 问题答案: 如果需要在运行时创建它,则至少需要在此时知道类型,因此可以使用以下方法: where 是泛型类型,是的类,并且是初始大小。 这里的文件

  • 我有以下代码: 我将添加更多类似的类。与其单独拼出所有这些类,我想学习如何创建一个可以从简单的数据结构创建这些类的工厂。 我该怎么做?我阅读了Metaobject协议文档,但根据文档页面顶部和中间的示例,我不知道如何动态地为我的类指定不同的名称。 我试过: 但最后一行只是抛出了一个错误: