راهنمای مختصر در مورد تبعیض تایپ

عکس پروفایل نویسنده

@dixitk13دیکسیت پاتل

فقط یک مهندس نرم افزار دیگر

غالباً موارد استفاده ای داریم که می خواهیم از یونیون نوع از یک نوع استفاده کنیم اما هنوز در مورد خصوصیات درون آنها مطمئن باشید.

interface Employee {
  name: string;
	salary: number;
}

interface HumanResource {
  name: string;
  power: boolean;
}

let person: Employee | HumanResource;

اما در زیر کلاه اتحادیه Typescript به جای داشتن “تمام خصوصیات” بیشتر ویژگیهای “مشترک” درون آنهاست.

بنابراین وقتی سعی می کنید از آن استفاده کنید مانند:

let helloPerson = (person: Employee | HumanResource): void = {
   console.log(person.);
}

در حالی که ، شما انتظار دارید که فرد دارای {نام ، دستمزد} یا {نام ، قدرت} باشد و بسته به اینکه چه شخصی باشد از بین آنها یکی را انتخاب کند.

اینجاست که تبعیض ها در بازی قدرت وارد می شوند. تحمل نامگذاری متغیر من:

بیایید یک enum تعریف کنیم که شامل هر دو مورد استفاده از Person باشد ، آن را PersonType می نامیم و سپس یک نوع را با ترکیب “HumanResource” و “Employee” تعریف می کنیم.

enum PersonType { "EMPLOYEE" , "HR" }

interface Employee {
  name: string;
  type: PersonType.EMPLOYEE
	salary: number;
}

interface HumanResource {
  name: string;
  type: PersonType.HR
  power: boolean;
}

type Person = HumanResource | Employee;

let person: Employee | HumanResource;

let helloPerson = (person: Person): void = {
  

سئو PBN | خبر های جدید سئو و هک و سرور