어떤 타입에 다른 이름을 붙인 것이라고 생각하면 편합니다.

Primitive타입을 다른이름으로 부르거나, Union타입을 다른이름으로 부르거나, Tuple이나 Function 에서 길어진 타입을 짧게 이름을 붙일 때 사용합니다.type MyStringType = string; // string타입을 MyStringType로 이름을 붙였습니다.
const str = 'world';
let myStr: MyStringType = 'hello';
// TypeScript는 구조가 같으면 같은 타입입니다.
myStr = str; // 서로 대입이 가능합니다.
str = myStr;
let person: string | number = 0;
person = 'Mark';
type StringOrNumber = string | number;
let another: StringOrNumber = 0;
another = 'Anna';
let person: [string, number] = ['Mark', 35];
type PersonTuple = [string, number];
let another: PersonTuple = ['Anna', 24];
type EatType = (food: string) => void;
EatType은 (food: string) => void 을 의미합니다.어떤 타입이 목적이나 존재 가치가 명확하면
interface를 사용하는 편이고,
다른 대상을 가리킬 뿐이거나 별명으로서만 존재힐 때에는Type Alias를 사용하는 편입니다.
기술적으로도
Type Alias와interface가 차이가 없는 것은 아닙니다.