| UNION, INTERSECTION
UNION
| 또는
//1. union 합지합 | (OR)
let nameOrAge: string | number;
nameOrAge = "jae";
nameOrAge = 25
위와 같이 타입을 여러개 허용하고싶을때 | 를 주면된다
활용해보자
아래와 같이 코드를 적으어보자. 일단은 에러가 날것이다
//1. union 합지합 | (OR)
let nameOrAge: string | number;
nameOrAge = "jae";
nameOrAge = 25
interface IName{
name: string;
}
interface IAge{
age: number;
}
function prtUnion(params: IName | IAge){
if(params.name){
console.log(params.name);
}
if(params.age){
console.log(params.age);
}
}
| 로 적었어도 조건식을 적을때 params.필드명은 &조건으로 타입마다 하나씩 다 체크를 하게되므로
IAge에는 해당 필드가 없어서 에러가 발생한다
글래서 아래와 같이 "name" in params 처럼 적어야한다
//1. union 합지합 | (OR)
let nameOrAge: string | number;
nameOrAge = "jae";
nameOrAge = 25
interface IName{
name: string;
}
interface IAge{
age: number;
}
function prtUnion(params: IName | IAge){
if("name" in params){
console.log(params.name);
}
if("age" in params){
console.log(params.age);
}
}
prtUnion({name:"hi"});
prtUnion({name:"hi",age:25});
INTERSECTION
& 그리고
//2. intersection 교집합 & (AND)
interface IName{
name: string;
}
interface IAge {
age: number;
}
const nameAndAge: IName & IAge ={
name:"jae",
age:25
}
만약 하나라도 빠지면 에러남
예시를 보겠다
// 2. intersection 교집합 & (AND)
interface IName{
name: string;
}
interface IAge {
age: number;
}
interface INameAndAge {
name:string;
age: number;
}
//방법1
function search(params:IName & IAge){
console.log(params.age + " " + params.name );
}
//방법2
function search1(params:INameAndAge){
console.log(params.age + " " + params.name );
}
search({name:"hi",age:25});
위와 같이 interface INameAndAge를 새로 만들어도되고
코드의 재활용을 위해 아래와 같이 type을 활용할수도 있다
interface IName{
name: string;
}
interface IAge {
age: number;
}
type ForSearch = IName & IAge;
//방법3
function search(params:ForSearch){
console.log(params.age + " " + params.name );
}
search({name:"hi",age:25});
반응형
'웹 개발 > #️⃣ TypeScript' 카테고리의 다른 글
TS | 제네릭 (0) | 2023.06.04 |
---|---|
TS | key와 같이 쓰는 타입 (0) | 2023.06.03 |
TS | 클래스 - readonly와 생성자 (0) | 2023.06.01 |
TS | 클래스 - 접근제한자와 getter setter (0) | 2023.06.01 |
TS | null과 undefined (0) | 2023.05.30 |