首页 > 解决方案 > 如何处理特别“长”的接口?

问题描述

给定以下接口,假设有 10 个或更多属性

export interface EmployeeFilter {
  name: string;
  gender: string;
  age: number;
  from: Date;
  to: Date;
  module: string;
  position: string;
  phone: string;
  email: string;
  country: string;
}

EmployeeFilter有没有办法在不显式设置属性的情况下使用签名初始化对象?

目前我必须手动初始化属性:

const searchby: EmployeeFilter = {
  name: '',
  gender: '',
  age: 28,
  from: null,
  to: null,
  module: '',
  position: '',
  phone: '',
  email: '',
  country: ''
}

所以我正在寻找一种方法,EmployeeFilter通过将其设置为自动初始化所​​有属性null。我尝试了一些想法,例如:

const searchby: EmployeeFilter = new class implements EmployeeFilter{}();

但是,例如,console.log(searchby);我得到的只是一个空对象字面量{}

标签: angulartypescript

解决方案


接口只存在于类型系统中,TypeScript 类型永远不会影响发出的 JavaScript。

因此,仅基于接口是完全不可能的。

但是,您可以用类替换接口。


推荐阅读