首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保函数支持两种接口类型?

如何确保函数支持两种接口类型?
EN

Stack Overflow用户
提问于 2022-08-28 04:22:48
回答 2查看 31关注 0票数 0

我有一个名为printForm的函数,它需要同时支持两个接口IOldForm(旧版env)和INewForm(新env),但它存在以下问题:

代码语言:javascript
复制
interface IOldForm {
  formDescription: string;
  formId: string;
  isOpt: boolean;
  incude?: boolean;
}

interface INewForm extends Pick<IOldForm, "formDescription"> {
  type: string;
  route: string;
}

const oldForm = {
  formDescription: "oldForm",
  formId: "123",
  isOpt: true
};

const newForm = {
  formDescription: "newForm",
  type: "newForm",
  route: "456"
};

const test = (trans: INewForm) => {
  console.log(trans);
};

const printForm = (form: IOldForm | INewForm): void => {
  console.log(form.isOpt);
  test(form);
};

printForm(oldForm);

printForm(newForm);

如何解决这个问题以确保printForm同时支持oldForm和newForm类型?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2022-08-28 05:12:17

您必须首先检查您的类型是否为IOldForm或INewForm。就像这样:

代码语言:javascript
复制
const printForm = (form: IOldForm | INewForm): void => {
// by checking this typescript will be informed that which type you wanna use
if("isOtp" in form){
  console.log(form.isOpt);
  test(form);
  }
};

票数 1
EN

Stack Overflow用户

发布于 2022-09-10 11:46:37

代码语言:javascript
复制
const printForm = (form: IOldForm | INewForm): void => {
  const { isOpt } = form as IOldForm;
  console.log(isOpt);
};

printForm(oldForm);

我们可以使用类型断言来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73515981

复制
相关文章

相似问题

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