TypeScriptfunction logMessage(value: string) {
console.log(value);
}
logMessage("hello");
logMessage(100); // 에러 발생
function logMessage(value: string | number) {
console.log(value);
}
logMessage("hello");
logMessage(100);

string일 경우

number일 경우
조금 헷갈리지만 재미있는 점은 if문을 두었을 때 해당 연산에 일치하는 type의 값을 기준으로 매개변수를 판별한다는것이다.
<aside> 💡 해당 타입에 맞는 API를 바로 활용할 수 있다고 표현한다
</aside>
function logMessage(value: string | number) {
if (typeof value === "number") {
value.valueOf();
}
if (typeof value === "string") {
value.toString();
}
}
→ 특정 타입으로 타입의 범위를 좁혀나가는(필터링 하는) 과정
function logMessage(value: string | number) {
if (typeof value === "number") {
value.valueOf();
}
if (typeof value === "string") {
value.toString();
}
throw new TypeError("value must be string or number");
}
interface Develop {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone(someone: Develop | Person) {
// name만 접근 가능
// someone을 통해서 name, skill, age 모두에 접근이 가능할거라는 생각이 듦 하지만 그렇게 동작하지 않음
// Develop도 되고 Person도 동일하게 갖고있는 속성이여야한다.
}