//Case1)타입 별칭을 사용하여 두가지 타입을 지원하는 새로운 타입을 정의합니다.
type StringOrNumber = string | number;
let sample: StringOrNumber;
sample = "hello";
console.log("sample:", sample);
sample = 123;
console.log("sample:", sample);
//Case2)복잡한 타입도 별칭으로 정의할 수 있습니다.
//MemberType 타입 별칭 구조와 속성 타입을 정의합니다.
type MemberType = {
name: string;
age: number;
address: { city: string; country: string };
};
//해당 MemberType 타입의 변수를 선언하고 값을 할당합니다.
let personData: MemberType = {
name: "John Doe",
age: 25,
address: {
city: "Seoul",
country: "South Korea",
},
};
//특정함수에 파라메터로
function printPersonInfo(person: MemberType) {
console.log(
`name: ${person.name}, age: ${person.age}, address: ${person.address.city}, ${person.address.country}`
);
}
printPersonInfo(personData);
//Case3)함수의 구조를 타입으로 정의하기
//마이너스함수를 타입으로 minusFunc 타입으로 정의함
//calFunc()함수의 구조를 타입으로 정의한다.
//type 함수타입명 =(파라메터)=>반환값타입
type calFuncType = (a: number, b: number) => number;
function plus(a: number, b: number) {
return a + b;
}
function minus(a: number, b: number): number {
return a - b;
}
//함수의 파라메터로 특정함수를 전달할때는 전달 함수의 파라메터명:(함수 파라메터명:타입,파라메터명:타입) => 함수반환타입 형식으로 정의
//calculate()함수에 파라메터(인수)로 전달되는 함수의 파라메터명과 타입,반환값을 어떻게 정의하는지 확인하세요.
//여러개의 기초함수를 만들어두고 해당 기초함수의 공통함수타입을 정의후 특정함수에 파라메터로 전달해 하나의 함수를 통해 선택적으로 매개변수함수를 실행할수있다.
function calculate(a: number, b: number, calFunc: calFuncType): number {
return calFunc(a, b);
}
//calculate함수에 plus,minus 함수를 파라메터로 전달해 해당 전달함수의 로직으로 계산을 수행하게 하는 예시
console.log(calculate(10, 5, plus));
console.log(calculate(10, 5, minus));
//CaSe4: 함수 파라메터인수와 반환값을 위한 type 정의
type OperationInput = {
a: number;
b: number;
};
type OperationOutput = {
result: number;
};
// 함수 구현
function addNumbers(input: OperationInput): OperationOutput {
const { a, b } = input;
return { result: a + b };
}
// 사용 예시
const input: OperationInput = { a: 5, b: 3 };
const output: OperationOutput = addNumbers(input);
console.log(output); // { result: 8 }
//tsc --strictNullChecks type-alias.ts
//node type-alias.js
-코딩을 모두 진행 저장하고 아래 명령어를 통해 터미널창에서 ts파일을 컴파일하고 컴파일 결과.js파일을 실행합니다.
D:\TypeScript\2-TS-Basic
tsc --strictNullChecks type-alias.ts
node type-alias.js