首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在typescript中创建对象时是否忽略接口中的某些属性?

在typescript中创建对象时是否忽略接口中的某些属性?
EN

Stack Overflow用户
提问于 2019-04-16 19:09:50
回答 3查看 4.1K关注 0票数 7

我有定义了一些属性的接口。我想从这个接口创建一个对象,但是在创建时,我不想完全初始化接口中提到的所有属性。我只想初始化几个。我怎样才能做到这一点呢?谢谢。

代码语言:javascript
运行
复制
export interface Campaign {
  id: string;
  name: string;
  createdOn: string;
  lastUpdated: string;
  createdBy: User;
  type: CampaignType;
  status: CampaignStatus;
  startDate: string;
  endDate: string;
  budget: number;
  description: string;
  account: Account;
}

我想创建一个campaign对象数组。这就是我正在尝试做的事情。

代码语言:javascript
运行
复制
let campaigns: Campaign[] = [
    {  id:"1",
       name: "test campaign"
      }

   ];

然而,我得到了以下错误。

类型'{ id: string;name: string;}‘缺少’Campaign‘类型的以下属性: createdOn、lastUpdated、createdBy、type和6 more.ts(2740)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-16 19:16:33

你可以使用Partial -

代码语言:javascript
运行
复制
let campaigns: Partial<Campaign>[] = [
    {  id:"1",
       name: "test campaign"
      }

   ];
票数 7
EN

Stack Overflow用户

发布于 2019-04-16 19:13:19

如果您将可选属性设置为可空,那么它应该可以工作。

示例:

代码语言:javascript
运行
复制
type User = {
  firstName: string;
  lastName?: string;
};

// We can assign a string to the "lastName" property
let john: User = { firstName: "John", lastName: "Doe" };

// ... or we can explicitly assign the value undefined
let jane: User = { firstName: "Jane", lastName: undefined };

// ... or we can not define the property at all
let jake: User = { firstName: "Jake" };
票数 8
EN

Stack Overflow用户

发布于 2019-04-16 19:18:56

您可以通过执行{ propName?: propType }将不希望在创建时设置值的属性标记为可选

或者,如果希望将所有属性标记为可选,则可以使用Partial

代码语言:javascript
运行
复制
Partial<{
  prop1: string,
  prop2: number,
}>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55706799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档