typescript - 在打字稿中创建对象时忽略界面中的某些属性?
问题描述
我定义了一些属性的接口。我想从此接口创建一个对象,但是在创建时我不想完全初始化接口中提到的所有属性。我只想初始化一些。我怎样才能做到这一点?谢谢你。
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;
}
我想创建一系列活动对象。这就是我想要做的。
let campaigns: Campaign[] = [
{ id:"1",
name: "test campaign"
}
];
但是我收到以下错误。
键入'{ id:字符串;名称:字符串;}' 缺少“Campaign”类型的以下属性:createdOn、lastUpdated、createdBy、type 和 6 more.ts(2740)
解决方案
如果您使可选属性可以为空,它应该可以工作。
例子:
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" };
推荐阅读
- javascript - 我们可以使用 event.target 为每次迭代转换(translateX)吗
- sql-server - 为什么存储过程中的多个插入不适用于 PyODBC?
- html - Angular-是否可以在子组件中使用内容投影?
- docker - 如何在 IntelliJ 中启动 Docker 后启动浏览器
- amazon-web-services - 如何通过 AWS SNS 发送电子邮件,每条消息都有一个自定义 FROM 地址
- python - 如何在 Python 中生成新的排列?
- python - 在生产环境中使用 Sanic 的内置网络服务器
- mysql - 如何按月创建活跃公司的视图?
- html - 如何提高我的网站在移动设备上的可读性?
- cvs - cvs 在 MacOs-Catalina 上坏了?(无法获取工作目录)