fuction plus10 (num : number | string) :void {
console.log(num + 10) // 실행불가
// 왜냐면, union type은 새로운 타입을 생성하는 것과 같아서,
// number 데이터가 들어왔다고 number타입이 되지는 않음
}
function typeIs(data : string | number) : void {
if(typeof data === 'string'){
console.log('string')
}else if(typeof data === 'number'){
console.log('number')
}
}
function isUndf(data : number | undefined){
if(data && typeof data === 'number'){
console.log(data)
}
}
type Ipad = {pencil : boolean};
type Iphone = {dynamicIsland : boolean};function infoPrinter(device : Ipad | Iphone){
if('pencil' in device){
console.log(device.pencil);
}else{
console.log(device.dynamicIsland);
}
}
let date = new Date();
if(date instanceof Date){console.log('true')};
function assertionFun(data : string | number) : void {
let numebrData = data as number; // 무조건 number타입으로 변경
let dataType = typeof numberData;
console.log(dataType); // 무조건 number타입만 출력
}
function returnData< MyType >(data : MyType) : MyType {
return data;
}
let str = returnData< string >('Hello');
let num = returnData< number >(12345);
let numArr = returnData< number[] >([1,2,3,4,5]);
// 모든 변수에 지정한 타입변수가 잘 적용되어있음을 확인할 수 있음
// 예시) length 기능을 쓰고싶어서 문자열과 배열만 받고 싶다면
function lenFunc< MyType extends string : [] >(data : MyType){
return data.length;
}
let count1 = lenFunc< string >('hello');
let count2 = lenFunc< [] >([1,2,3,4,5]);
🌟 잘못된 부분에 대한 말씀은 언제나 저에게 큰 도움이 됩니다. 🌟
👍 감사합니다!! 👍