function printName(person: { first: string; last: string }): void {
console.log(`${person.first} ${person.last}`);
}
printName({ first: "Thomas", last: "Jenkins" });
printName 이라는 함수는 person을 매개변수로 받습니다. 이는 객체이며, first(키)에는 string 값을, last(키)에는 string 값을 각각 할당해서 받습니다. return되는 값은 void로 없습니다.
여러개의 타입을 지정해줘야할 때, 코드가 불필요하게 길어지는 경우가 있습니다
그럴 때 타입부분만 따로 선언 및 할당을 해주고, 그렇게 선언된 타입변수를 활용해서 어노테이션하는 방법입니다.
타입을 선언해줄 때는 첫글자를 대문자로 선언해줘야합니다.
type Song = {
title: string;
artist: string;
numStreams: number;
credits: { producer: string; writer: string };
};
function calculatePayout(song: Song): number {
return song.numStreams * 0.0033;
}
type Point = {
x: number;
y: number;
z?: number;
};
z의 경우 선택적 프로퍼티로 선언 했습니다. 필수는 아니라는 것을 의미합니다.
z가 없어도 됩니다.
type User = {
readonly id: number; // readonly 제어자
username: string;
};
const user: User = {
id: 12837,
username: "catgurl",
};
console.log(user.id);
user.id = 1234 // 여기서 에러 발생, 새롭게 할당이 불가능합니다.
type Cat = {
numLives: number;
};
type Dog = {
breed: string;
};
type CatDog = Cat &
Dog & {
age: number;
};
const christy: CatDog = {
numLives: 7,
breed: "Husky",
age: 9,
};
&(엔퍼센트)를 통해 묶어서 어노테이션을 줄 수 있습니다.
// String array
const activeUsers: string[] = [];
activeUsers.push("Tony");
// Array of numbers
const ageList: number[] = [45, 56, 13];
ageList[0] = 99;
// Alternate Syntax:
// const bools: Array<boolean> = []
const bools: boolean[] = [];
type Point = {
x: number;
y: number;
};
const coords: Point[] = [];
coords.push({ x: 23, y: 8 });
// Multi-dimensional string array
const board: string[][] = [
["X", "O", "X"],
["X", "O", "X"],
["X", "O", "X"],
];