Typescript에서 유형을 확인하는 방법
10594 단어 webdevtypescriptjavascript
Typescript에는 다음을 사용하여 작업하는 세 가지 방법이 있습니다.
대본
애플리케이션 코드에서 엔터티 클래스
Invoice
로 회계 소프트웨어를 구축하고 있습니다.class Invoice {
public amount: number;
public description: string;
country: string;
}
class SalesInvoices extends Invoice {
products: Array<string> = [];
}
class PurchaseInvoice extends Invoice {
tax: number;
}
const invoicesToProcess: Array<Invoice> = [];
한 팀은 우리가 몇 가지 작업을 수행하기를 원합니다.
아이디어는 각 작업에 typeof, instanceof 및 type guards를 사용하는 것입니다. 해보자:
TypeOf 사용
연산자
typeof
는 javascript 값 유형을 비교하는 데 도움이 됩니다. amount 매개변수가 문자열 또는 숫자이기 때문에 typeof
함수에 삼진과 함께 createInvoice
를 사용합니다.function createInvoice(
description: string | number,
amount: number,
country
): Invoice {
const descriptionValue =
typeof description === "number" ? `${description}` : description;
return {
description: descriptionValue,
amount,
country,
};
}
이제 설명에 함수, 지원 문자열 및 번호가 있습니다.
const invoiceWithNumber = createInvoice(1231321, 120, "ES");
const invoIceWithString = createInvoice("Banana", 90, "USA");
console.log(invoIceWithString, invoiceWithNumber);
완벽합니다. 2단계로 넘어갑시다.
Learn more about typeof and values types.
InstanceOf 사용
salesInvoice는 Invoice에서 확장되기 때문에 우리의 과제는 SalesInvoice를 invoicesToProcess에 추가하는 것뿐입니다. invoiceToProcess는 모든 송장 매개변수를 이해하고 송장에서 양식 송장을 확장하여 유효합니다.
instanceof 연산자는 클래스 인스턴스를 비교하기 때문에 도움이 됩니다.
function addInvoiceToProcess(invoice: Invoice) {
if (invoice instanceof SalesInvoices) {
invoicesToProcess.push(invoice);
}
}
instanceof 연산자는 생성자를 SalesInvoice와 비교하여 일치하는 경우 송장을 어레이에 푸시합니다. 코드를 테스트해 봅시다.
const salesInvoice = new SalesInvoices();
salesInvoice.amount = 100;
salesInvoice.country = "ES";
const basicInvoice = new Invoice();
basicInvoice.amount = 90;
basicInvoice.country = "USA";
addInvoiceToProcess(basicInvoice);
addInvoiceToProcess(salesInvoice);
console.log(invoicesToProcess);
완벽하게 작동하고 최종 작업으로 이동합니다.
Learn more about instanceof
타입 가드 사용
마지막 두 접근 방식의 경우 값 유형 또는 인스턴스에 도움이 되는 typeof 및 instanceof를 사용하지만 값은 어떻습니까?
마지막 과제는 국가가 "ES"이고 금액이 "100"이상인 경우 인쇄하는 것이며 이를 위해 Type Guards를 사용합니다.
유형 보호는 어설션을 사용하는
is
연산자가 포함된 함수로, 컴파일러에 일부 유형에 적합함을 알려줍니다.function isValidInvoice(invoice: Invoice): invoice is SalesInvoices {
return invoice.amount > 100 && invoice.country === "ES";
}
// the code looks clean.
invoicesToProcess.forEach((invoice) => {
if (isValidInvoice(invoice)) {
console.log(invoice);
}
});
Learn more about Type Guards
요약
우리는 Typescript에서 유형 검사를 처리하는 방법을 배웠고 유형 가드를 사용하여 어설션 함수를 작성하여 코드를 깔끔하고 따라하기 쉽게 만들었습니다.
향후 유형 검사에 도움이 되기를 바랍니다.
Reference
이 문제에 관하여(Typescript에서 유형을 확인하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/danywalls/how-to-check-types-in-typescript-o5n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)